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

2022-03-14 财经 92阅读
#include
#include
#defineNull0
#defineOverFlow-1
#defineOK0
#defineError-2
typedefintElemType;
typedefstructnode
{
ElemTypedata;
structnode*next;
}Node,*LinkList;
voidInit_LinkList(LinkList*Head_pointer)
{//线性表初始化
*Head_pointer=Null;
}
intInsert_First(LinkList*Head_pointer,ElemTypex)
{//采用插建立线性表
Node*p;
p=(Node*)malloc(sizeofNode);
if(p==NULL)
returnOverFlow;
p->data=x;
p->next=*Head_pointer;
*Head_pointer=p;
returnOK;
}
LinkListLocation_LinkList(LinkListHead,ElemTypex)
{//查询链表某结点数据否存
LinkListp;
p=Head;
while(p!=Null)
{
if(p->data==x)
break;
p=p->next;
}
returnp;
}
intDelete_LinkList(LinkList*Head_pointer,ElemTypex)
{//删除链表某结点
Node*p,*q;
p=*Head_pointer;
if(p->data==x)//考虑结点要删除元素
{
*Head_pointer=(*Head_pointer)->next;
free(p);
returnOK;
}
else
{
q=p;p=p->next;
while(p!=Null)
{
if(p->data==x)
{
q->next=p->next;
free(p);
returnOK;
}
q=p;p=p->next;
}
}
returnError;
}
voidShow_LinkList(LinkListHead)
{//遍历线性表元素
LinkListp=Head;
inti=0;
printf("---链表打印---\n");
if(p==Null)
printf("空表\n");
while(p!=Null)
{
printf("[%d]:%d\t",i++,p->data);
p=p->next;
}
}
intLength_LinkList(LinkListHead)
{//求链表度
LinkListp=Head;
intsum=0;
while(p!=Null)
{
sum++;
p=p->next;
}
returnsum;
}
voidSetNull_LinkList(LinkList*Head_pointer)
{//链表清空
LinkListp,q;
p=*Head_pointer;
while(p!=Null)
{
q=p;p=p->next;free(q);
}
}
intmain(void)
{
LinkListHead;
inti;
Node*loca;
ElemTypex;
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)
{
case1:printf("请输入要插入数:\n");
scanf("%d",&x);
if(Insert_First(&Head,x)!=OK)
printf("插入失败\n");
break;
case2:printf("请输入要查询数:\n");
scanf("%d",&x);
loca=Location_LinkList(Head,x);
if(loca!=Null)
printf("查询功\n");
else
printf("查询失败\n");
break;
case3:printf("请输入要删除数:\n");
scanf("%d",&x);
if(Delete_LinkList(&Head,x)!=OK)
printf("删除失败\n");
else
printf("删除功\n");
break;
case4:Show_LinkList(Head);
break;
case5:printf("表度:%d",Length_LinkList(Head));
break;
case6:break;
}
}while(i!=6);
SetNull_LinkList(&Head);
printf("链表已清空程序退...\n");
return0;
}
Cecil
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com