c++实现单链表的操作

上传人:夏** 文档编号:457721137 上传时间:2022-11-28 格式:DOC 页数:10 大小:38KB
返回 下载 相关 举报
c++实现单链表的操作_第1页
第1页 / 共10页
c++实现单链表的操作_第2页
第2页 / 共10页
c++实现单链表的操作_第3页
第3页 / 共10页
c++实现单链表的操作_第4页
第4页 / 共10页
c++实现单链表的操作_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《c++实现单链表的操作》由会员分享,可在线阅读,更多相关《c++实现单链表的操作(10页珍藏版)》请在金锄头文库上搜索。

1、3 .设有一单向链表的结点的结构,定义如下:Struct PhoneBook Char name20; Char number15; PhoneBook *next;Bingo(1)编写一个函数PhoneBook *insert(PhoneBook *head, PhoneBook *phonenum);将一条记录phonenum 插入到按姓名排序的电话本head中,插入后链表保持有序。Bingo(2)编写一个函数PhoneBook *delete_node(PhoneBook *head, char *name);将电话本head中姓名为name的记录删除。(3) 编写一个函数 PhoneB

2、ook *find(PhoneBook *head, char *s);在电话本head 中查找姓名或电话号码为s的记录。(4) 编写一个函数void List_name(PhoneBook *head, char *s);将电话本中所有姓s的记录列举出来。Bingo(5) 编写一个函数void print(PhoneBook *head); 将电话本head中的记录按顺序输出。#include#include#includetypedef struct phonebookchar name20;char number10;struct phonebook *next;linklist;lin

3、klist *head,*p;/带头结点的尾插法建立单链表linklist *creat()linklist *head,*r,*s;int n=0;head=malloc(sizeof(linklist);head-next=NULL;s=head;r=head;printf(建立单链表,请输入姓名和号码,当输入超过6组时,建立结束:n);gets(s-name);gets(s-number);while(n!=5)s=malloc(sizeof(linklist);printf(建立单链表,请输入姓名和号码,当输入超过6组时,建立结束:n);gets(s-name);gets(s-numb

4、er);r-next=s;r=s;n+;r-next=NULL;return head;/带头结点的尾插法建立要插入信息的单链表linklist *creat1()linklist *head,*r,*s;head=malloc(sizeof(linklist);head-next=NULL;s=head;r=head;printf(只建立一个元素的单链表phonenum,请输入姓名和号码:n);gets(s-name);gets(s-number);r-next=NULL;return head;/单链表的输出函数void print(linklist *head)linklist *p;p

5、=head;printf(输出单链表:n);if(p!=NULL)doprintf(%st%s,p-name,p-number);p=p-next;printf(n);while(p!=NULL);/单链表的排序函数void paixu(linklist *head)linklist *p,*q,*small;char temp20,temp110;for(p=head-next;p-next!=NULL;p=p-next)small=p; for(q=p-next;q;q=q-next)if(strcmp(q-name,small-name)name);strcpy(temp1,p-numb

6、er);strcpy(p-name,small-name);strcpy(p-number,small-number);strcpy(small-name,temp);strcpy(small-number,temp1);printf(排序后输出:n);print(head); /插入函数linklist *insert(linklist *head,linklist *phonenum)linklist *p,*s,*q;s=phonenum; q=head;while(strcmp(q-next-name,s-name)next;p=q-next;q-next=s;s-next=p;ret

7、urn (head);/删除函数void del_node(linklist *head,char *name)linklist *p,*q;q=head;while(strcmp(q-next-name,name)!=0)q=q-next;p=q-next;q-next=p-next;free(p);/查找函数linklist *find(linklist *head,char *s)linklist *p,*q;p=head-next;/*while(p!=NULL)if(strcmp(p-name,s)=0)|strcmp(p-number,s)=0)printf(%st%st,p-na

8、me,p-number);*/while(p!=NULL)/q=malloc(sizeof(linklist);if(strcmp(p-name,s)=0)|(strcmp(p-number,s)=0)q=p;return q;void List_name(linklist *head, char *s)linklist *p;p=head-next;while(p!=NULL)if(strcmp(p-name,s)=0)printf(%st%st,p-name,p-number);break;void main()linklist *head,*phonenum,*p;int i;char

9、iname20,s20;printf(*n);printf(1.建立单链表n);printf(2.排序n);printf(3.建立一个phonenum并按顺序插入n);printf(4.删除n);printf(5.查找n);printf(*n);loop:printf(请做出选择:n); scanf(%d,&i);if(i6)printf(选择错误请重新选择:n);goto loop;switch(i)case 1:printf(您选择的是建立单链表n);goto loop1; break;case 2:printf(您选择的是对单链表排序n);goto loop2; break;case 3

10、:printf(您选择了插入操作n);goto loop3;break;case 4:printf(您选择了删除操作n);goto loop4;break;case 5:printf(您选择了查找操作n);goto loop5;break;loop1:head=creat();print(head);printf(n);goto loop;loop2:paixu(head);goto loop;loop3:phonenum=creat1();insert(head,phonenum);printf(插入新信息phonenum后:n);print(head);goto loop;loop4:printf(请输入你要删除信息的姓名:n);gets(iname);del_node(head,iname);print(head);goto loop;loop5:printf(请输入你要查找的名字或者号码:n);gets(s);List_name(head,s);goto loop;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号