c++实现单链表的操作.doc_第1页
c++实现单链表的操作.doc_第2页
c++实现单链表的操作.doc_第3页
c++实现单链表的操作.doc_第4页
c++实现单链表的操作.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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) 编写一个函数 phonebook *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;linklist *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-number);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=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-number);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;return (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-name,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 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: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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论