单链表结点(多成员)的插入、查找与删除

单链表结点(多成员)的插入、查找与删除

ID:38621185

大小:41.50 KB

页数:4页

时间:2019-06-16

单链表结点(多成员)的插入、查找与删除_第1页
单链表结点(多成员)的插入、查找与删除_第2页
单链表结点(多成员)的插入、查找与删除_第3页
单链表结点(多成员)的插入、查找与删除_第4页
资源描述:

《单链表结点(多成员)的插入、查找与删除》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、/*程序功能:用尾插法创建一个简单的链表,1.将链表中的数据输出到显示器上.2.查找结点3.插入结点.4.删除结点*/#include#include#includestructLNode/*定义链表结构(也可叫结点结构体)*/{charname[10];intclas;intdata;/*结点成员:数据域data*/structLNode*next;/*结点成员:指针域,指针域存放下一个结点的存储位置(即指针),*/};/*注意分号结束.不加分号,将提示"定义中有太多的类型"错误提示*//*总结:结点总是由两部分组成

2、:一个数据域,一个指针域.数据域可能有多个成员*/structLNode*h;/*头指针h----特别提示:定义在函数体外,以便下面的函数都能使用,请死死"抓住"头指针*//*下面各函数体内定义的变量(虽然同名)只在各自的函数体内有效,这点早有讲述,不再重复*//*下面定义create函数,该函数功能是建立链表.该函数必须定义为指针函数,因为其返回值必须为指针值,指针指向的是structLNode数据类型.---实际上是返回链表的头结点指针*/structLNode*create(intn){structLNode*p,*t;/*动态数据结点p(用于申请内存空间),尾结点t(

3、用于保存申请的空间).*/inti;/*循环变量*/h=NULL;/*头指针赋空值*/for(i=n;i>0;--i){p=(structLNode*)malloc(sizeof(structLNode));/*分配内存空间,建立节点*/printf("Inputname,classandscore:");scanf("%s%d%d",p->name,&p->clas,&p->data);if(h==NULL)/*如果头指针值为空值*/{h=p;/*把新建节点的存储地址放到头指针中."*/t=p;/*把新建节点给t节点,这样,头指针便指向了t结点*/}else/*否则(即头指

4、针值不为空)*/{t->next=p;/*把新建节点的存储地址给结点t的指针域.从第2次开始,新节点存储地址都传递给前一节点的指针域*/t=p;/*新节点给t节点,这样,上一节点的指针域便指向了新节点*/}}t->next=NULL;/*循环完毕,必须给最后一个节点指针域赋空值*/returnh;/*返回头指针,头指针此时的值已不为空*/}/*-------结点查询函数的实现----------*/structLNode*search(structLNode*h,charxm[10])/*结点查找函数:在以h为头结点的链表中查找分数为score的结点信息*/{structLN

5、ode*p;p=h;/*为不改变h的值,用p来替.两句可合并为一句:structLNode*p=h;因为经过create函数,h已返回头结点,且值已不再为空,并指向首结点.如果h为NULL的话,则应改为:p=h->next.即从首结点开始,这点一定要切记*/while(p!=NULL&&strcmp(p->name,xm)!=0)p=p->next;/*指向下一结点.该循环体只有这一句*/if(strcmp(p->name,xm)!=0)printf("Cannotfindyouneed!");elseprintf("youfindtheinformationis:---

6、>");printf("Name:%sClas:%dScore:%d",p->name,p->clas,p->data);putchar('');returnp;/*找到了要查找的结点,返回其地址*/}/*----插入一个结点的实现------*/intinsert(structLNode*h,inti)/*结点插入函数:在以h为头结点的链表中,在第i处插一个结点*/{intj;structLNode*p,*t;p=(structLNode*)malloc(sizeof(structLNode));/*创建一个新结点*/printf("Inputname,classand

7、score:");scanf("%s%d%d",p->name,&p->clas,&p->data);/*给新结点输入数据*/if(i<1)return0;/*如果实参过来的值小于1,则插入失败,返回0*/t=h;j=1;/*为不改变h的值,用t来代替.用t结点代替头结点开始,j=1,表示第1个结点*/while(t!=NULL&&jnext;j++;}/*指向下一个结点.j自增1.比如:i=5,则j++只到到

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。