当前位置:首页 > 数据结构课程设计之通讯录管理系统
/*********在通讯录链表head中插入结点************/ void InsertNode(LinkList head,ListNode *p) {
ListNode *p1,*p2; p1=head;
p2=p1->next;
while(p2!=NULL && strcmp(p2->data.num,p->data.num)<0) {
p1=p2; /*p1指向刚访问过的结点*/
p2=p2->next; /*p2指向表的下一个结点*/ }
p1->next=p; /*插入p所指向的结点*/ p->next=p2; /*连接表中剩余的结点*/ }
/**********有序通讯录链表的查找 ****************/ ListNode *ListFind(LinkList head) {
ListNode *p; char num[5]; char name[9]; char pp;
printf(\ printf(\按编号查询 \\n\ printf(\按姓名查询 \\n\ printf(\ printf(\请 选 择: \ p=head->next; scanf(\
if (pp=='a'||pp=='A') {
printf(\请输入要查找者的编号:\ scanf(\
while (p&&strcmp(p->data.num,num)!=0) p=p->next;
if ((p==NULL)) p=NULL; /*没有查到要查找的通讯信息*/ } else
if (pp=='b'||pp=='B') {
printf(\请输入要查找者的姓名:\ scanf(\
12
while(p&&strcmp(p->data.name,name)!=0) p=p->next; }
return p; }
/********通讯录链表上的结点删除*****************/ void DelNode(LinkList head) {
char cho;
ListNode *p,*q; p=ListFind(head); /*调用查找函数*/ if (p==NULL) {
printf(\没有查到要删除的通讯者!\\n\ return; }
else if(p!=NULL) {
printf(\真的要删除该结点吗?(y/n)\ scanf(\
if (cho=='y'||cho=='Y') {
q=head;
while ((q!=NULL)&&(q->next!=p)) q=q->next; q->next=p->next; /*删除结点*/
free(p); /*释放被删结点空间*/ printf(\删除成功!\\n\ } } }
/********通讯录链表的输出函数 **********/ void PrintList(LinkList head) {
ListNode *p; p=head->next;
printf(\编号 姓 名 性别 联系电话 地址 \\n\
printf(\ while (p!=NULL) {
13
printf(\>data.phone,p->data.addr);
printf(\ p=p->next; /*后移一个结点*/ } }
void main() {
int choice,j=1; while(j) {
printf(\
printf(\通 信 录 链 表 \\n\
printf(\ printf(\.通讯录链表的建立 *\ printf(\.通讯者结点的插入 *\ printf(\.通讯者结点的查询 *\ printf(\.通讯者结点的删除 *\ printf(\.通讯录链表的输出 *\ printf(\.退出通讯录管理系统 *\ printf(\ printf(\请选择菜单号(0--5):\ scanf(\ getchar(); switch(choice) {
case 1: {
printf(\ printf(\通 讯 录 链 表 的 建 立 *\\n\ printf(\ head=CreateList( ); flag1=1;
system(\ break; }
case 2: {
if(flag1!=1)
{printf(\请先建立表!\ getchar();
14
system(\ else {
printf(\ printf(\通 讯 者 信 息 的 添 加 *\\n\ printf(\ printf(\编号 姓名 性别 电话 地址 \\n\
printf(\ p=(ListNode *)malloc(sizeof(ListNode)); /*申请新结点*/
printf(\添加的编号:\\n\ scanf(\ printf(\添加的姓名:\\n\ scanf(\ printf(\性别:\\n\ scanf(\ printf(\电话:\\n\
scanf(\ printf(\地址:\\n\
scanf(\ InsertNode(head,p); system(\ break; }
case 3: {
if(flag1!=1) {
printf(\请先建立表!\ getchar(); system(\ } else {
printf(\ printf(\通 讯 录 信 息 的 查 询 *\\n\ printf(\ p=ListFind(head); if (p!=NULL) {
printf(\编号 姓 名 性别 联系电话 地址 \\n\
printf(\
15
共分享92篇相关文档