#include <cstddef>
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
typedef  struct {char xuehao[14];//学号  char name[20]; //姓名  int sex; //性别  char tel[14]; //联系电话  char qq[12]; //QQ号
}ElemType;
typedef struct LNode {ElemType data;struct LNode* next;
}LNode, * LinkList;
LinkList head;
LinkList CreatList(LinkList& L) {
L = new LNode;
L->next = NULL;//当定义为NULL时需要包括头文件cstddef
return head;}void PrintList(LinkList head) {  LNode *p; p=head->next; printf(" 学号 姓名 性别 联系电话 QQ号\n");  printf("------------------------------------------------------------\n");  while(p!=NULL ) {  printf("%-14s%-14s",p->data.xuehao,p->data.name);  if(p->data.sex) printf(" 男 "); else printf(" 女 "); printf("%-14s%-10s\n",p->data .tel,p->data.qq); printf("----------------------------------------------------------\n");  p=p->next;               } } void InsertLinkList(LinkList *head) //考虑实际情形,在教材的基础作一个变化,将插入位置和插入的数据信息改为输入,//不作为形参传入信息。 {  LNode *p,*s;  int j; int k;ElemType data;printf("请输入要插入的数据");scanf("%s %s %d %s %s",data.xuehao,data.name,&data.sex,data.tel,data.qq);printf("输入要插入的位置");scanf("%d",&j); p=*head;//?while(p&&(k<j-1)){p=p->next;k++;}if(!p||k>j-1)return ;s=new LNode;s->data=data;s->next=p->next;p->next=s;return ;                }
void GetElemList(LNode *head,ElemType *e)//读取位置改为在函数内输入
{       LNode *p;   int i=0;p=head->next;while(p&&p->data.qq!=e->qq){p=p->next;i++;}printf("在链表的第%d个位置",i+1);}int DeleteElemLinkList(LinkList *head,ElemType *e)
{ LNode *p,*q; int i=0;int j;  p=*head;while((p->next)&&(p->data.qq!=e->qq)){p=p->next;i++;} if(!(p->next)||(j>i-1)) return 0;q=p->next;p->next=q->next;delete q;return 1;} int  main()
{
LinkList head; ElemType* e = NULL; int choice;
do { printf(" 通讯录管理系统\n"); printf("======================================\n");
printf(" 0:退出\n");  printf(" 1:建立通讯录\n"); printf(" 2:插入\n");  printf(" 3:删除\n"); printf(" 4:查询\n");  printf(" 5:输出\n");
printf("======================================\n"); printf("请选择0-5\n");  scanf("%d", &choice);  while (choice < 0 || choice>5) { printf("输入错误,请重新输入:");
scanf("%d", &choice); }  switch (choice)
{ case 0:exit(1); case 1:head = CreatList(head); break;
case 2:
InsertLinkList(&head);
break;
case 3:
DeleteElemLinkList(&head, e);
break;
case 4:
GetElemList(head, e);
break;
case 5:PrintList(head); break;}
} while (choice);}

用单链表实现通讯录管理相关推荐

  1. C语言 单链表通讯录基础版实现,保证看完都直呼easy

    C语言 单链表实现通讯录基础版,保证看完都大呼简单! --------------------------------- 首先在写通讯录之前,必须明确我们的需求: 因为是基础版,我在这里暂时只实现以下 ...

  2. Java数据结构——用单链表编写一个简易通讯录

    Java数据结构--用单链表编写一个简易通讯录 1.定义线性表的抽象数据类型(接口) 2.定义单链表的结点Node类 3.定义数据域中的联系人Person类 4.编写顺序表(类) 5.编写测试程序(m ...

  3. 一个很Low的通讯录管理系统(但是能用)C/C++单链表实现

    通讯录管理系统的设计 问题需求分析 在计算机还未普及之前通讯管理都是由联系人采用名片,通讯录往往采用的是笔录手工记帐的方式来操作的.现在一般的通讯录管理都是采用计算机作为工具的实用的计算机通讯录管理程 ...

  4. 单链表的应用---通讯录设计(数据结构课设)

    一.实验目的 1)熟悉并掌握线性表的逻辑结构.物理结构: 2)熟悉并掌握线性链表的存储结构.基本操作和具体函数的定义: 二.实验内容 设计一个含有多个菜单项的主菜单程序,然后再为这些菜单项配上相应的功 ...

  5. 成绩管理单链表文件c语言,c语言学生信息管理完整.docx

    学生信息管理系统 本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉 C 语言的文件和单链表的各种基本操作.本程序中涉及结构体.单链表.文件等方面的知 识.通过本程序的训练,使学 ...

  6. 通讯录中每个通讯者的信息包括编号、姓名、性别、电话、E-mail地址;采用单链表结构存储

    通讯录中每个通讯者的信息包括编号.姓名.性别.电话.E-mail地址:采用单链表结构存储,实现以下功能: 1.通讯录的建立 2.通讯者信息的插入 3.通讯者信息的查询 4.通讯者信息的删除 5.通讯录 ...

  7. java单链表通讯录_[源码和文档分享]C++实现的基于链表的通讯录管理系统

    摘 要 随着计算机应用技术的快速发展和日益普及,网络也遍及到我们生活的每个角落,为我们的学习和工作带来极大的方便.很多人都使用过传统的纸质通讯录,与之不同的另外一种管理方式--程序通讯录管理.程序通讯 ...

  8. 用单链表的写一个通讯录管理系统

    本人前几天刚刚自学了单链表,趁热打铁,赶紧写一个小小的项目练练手. 单链表的实现在本人之前的博客中有:https://blog.csdn.net/weixin_57023347/article/det ...

  9. C语言基于单链表的班级通讯录(VS2019)

    Class Community Book程序快捷目录 注意 文字描述 问题描述 基本要求 代码部分 头文件 主程序 功能程序 注意 本程序由VS2019编写,属于记录学习过程,仍有许多问题尚未解决. ...

最新文章

  1. AttributeError: module ‘os‘ has no attribute ‘mknod‘
  2. ioc spring 上机案例_IOC(控制反转)—最后的爱,是放手
  3. Ubuntu升级到18.04
  4. java中websocket_Java中使用webSocket
  5. tp5index.php怎么放外面,tp5如何隐藏index.php
  6. Visual Studio中相对路径中的宏定义,你不了解的宏定义都在这里!
  7. [HTTP] HTTP的缓存机制
  8. 面向对象接口和类的区别
  9. 索引sql server_SQL Server索引结构和概念
  10. 【导入篇】Robotics:Perception课程_导入篇、四周课程内容、week 1st Perspective Projection
  11. Android 9.0的One UI系统,三星S9/S9+更新One UI 安卓9.0已正式推送
  12. hadoop面试题(全)
  13. 说明书中电磁兼容部分指南和制造商的声明怎么写?
  14. 服务器被攻击了怎么办
  15. 健身教练教你跑步减肥的正确方法
  16. JAVA求数组最大值最小值总和均值
  17. 若初见,若寻常,若是一双人
  18. faster-rcnn.pytorch-1.0的jwyang当前最火版本代码复现与讲解
  19. Java数组练习题百元百鸡,不死神兔
  20. Pycharm中光标变粗 光标进入改写状态

热门文章

  1. IAR编译错误:unable to allocate space for sections/blocks with a total estimated minimum size of 0x504c
  2. 火线、零线和地线及开关接线参考
  3. 一些有趣的 CSS 魔法和布局(下)
  4. mtalab两个矩阵的内积
  5. Redis数据丢失讨论及规避和解决的几点总结
  6. Python界址签章表的修改
  7. c++小游戏——杀手
  8. python判断字符串是否相同
  9. 精彩生活:日系景太郎的故事
  10. 武林传之刀剑江湖录(上)攻略