数据结构编程同学录管理问题:设计一个通讯录的日常管理程序.

数据结构编程:同学录管理问题:设计一个通讯录的日常管理程序。主要包括对通讯人的录入、浏览、插入新的通讯人和删除已有通讯人。每个通讯人的资料包括编号、姓名、性别、手机号。... 数据结构编程:同学录管理问题:设计一个通讯录的日常管理程序。主要包括对通讯人的录入、浏览、插入新的通讯人和删除已有通讯人。每个通讯人的资料包括编号、姓名、性别、手机号。 展开
 我来答
ou...c@163.com
2017-11-28 · TA获得超过201个赞
知道答主
回答量:150
采纳率:62%
帮助的人:19.1万
展开全部
#include
#include
#define Null 0
#define OverFlow -1
#define OK 0
#define Error -2
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node *next;
}Node,*LinkList;
void Init_LinkList(LinkList *Head_pointer)
{//线性表初始化
*Head_pointer = Null;
}
int Insert_First(LinkList *Head_pointer,ElemType x)
{//采用插建立线性表
Node *p;
p=(Node *)malloc(sizeof Node);
if(p==NULL)
return OverFlow;
p->data=x;
p->next = *Head_pointer;
*Head_pointer = p;
return OK;
}
LinkList Location_LinkList(LinkList Head,ElemType x)
{//查询链表某结点数据否存
LinkList p;
p=Head;
while(p!=Null)
{
if(p->data==x)
break;
p=p->next;
}
return p;
}
int Delete_LinkList(LinkList *Head_pointer,ElemType x)
{//删除链表某结点
Node *p,*q;
p=*Head_pointer;
if(p->data==x)//考虑结点要删除元素
{
*Head_pointer =(*Head_pointer)->next;
free(p);
return OK;
}
else
{
q=p;p=p->next;
while(p!=Null)
{
if(p->data==x)
{
q->next = p->next;
free(p);
return OK;
}
q=p;p=p->next;
}
}
return Error;
}
void Show_LinkList(LinkList Head)
{//遍历线性表元素
LinkList p=Head;
int i=0;
printf("---链表打印---\n");
if(p==Null)
printf("空表\n");
while(p!=Null)
{
printf("[%d]:%d\t",i++,p->data);
p=p->next;
}
}
int Length_LinkList(LinkList Head)
{//求链表度
LinkList p=Head;
int sum=0;
while(p!=Null)
{
sum++;
p=p->next;
}
return sum;
}
void SetNull_LinkList(LinkList *Head_pointer)
{//链表清空
LinkList p,q;
p=*Head_pointer;
while(p!=Null)
{
q=p;p=p->next;free(q);
}
}
int main(void)
{
LinkList Head;
int i;
Node *loca;
ElemType x;
Init_LinkList(&Head);
do
{
printf("\n");
printf("1---插入元素(Insert)\n");
printf("2---查询元素(Locate)\n");
printf("3---删除元素(Delete)\n");
printf("4---显示所元素(Show)\n");
printf("5---计算表度(Length)\n");
printf("6---退\n");
scanf("%d",&i);
switch(i)
{
case 1:printf("请输入要插入数:\n");
scanf("%d",&x);
if(Insert_First(&Head,x)!=OK)
printf("插入失败\n");
break;
case 2: printf("请输入要查询数:\n");
scanf("%d",&x);
loca = Location_LinkList(Head,x);
if(loca!=Null)
printf("查询功\n");
else
printf("查询失败\n");
break;
case 3: printf("请输入要删除数:\n");
scanf("%d",&x);
if(Delete_LinkList(&Head,x)!=OK)
printf("删除失败\n");
else
printf("删除功\n");
break;
case 4:Show_LinkList(Head);
break;
case 5:printf("表度:%d",Length_LinkList(Head));
break;
case 6:break;
}
}while(i!=6);
SetNull_LinkList(&Head);
printf("链表已清空程序退...\n");
return 0;
}
Cecil
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式