链表操作c程序讲义

链表操作c程序讲义

ID:5955692

大小:182.00 KB

页数:37页

时间:2017-12-29

链表操作c程序讲义_第1页
链表操作c程序讲义_第2页
链表操作c程序讲义_第3页
链表操作c程序讲义_第4页
链表操作c程序讲义_第5页
资源描述:

《链表操作c程序讲义》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、常见数据结构C语言程序一、单链表的建立有了动态内存分配的基础,要实现链表就不难了。所谓链表,就是用一组任意的存储单元存储线性表元素的一种数据结构。链表又分为单链表、双向链表和循环链表等。我们先讲讲单链表。所谓单链表,是指数据接点是单向排列的。一个单链表结点,其结构类型分为两部分:1、数据域:用来存储本身数据2、链域或称为指针域:用来存储下一个结点地址或者说指向其直接后继的指针。例:typedefstructnode{charname[20];structnode*link;}stud;这样就定义了一个单链表的结构,其中charname[20]是一个用来存储姓名的字符型数组

2、,指针*link是一个用来存储其直接后继的指针。定义好了链表的结构之后,只要在程序运行的时候爱数据域中存储适当的数据,如有后继结点,则把链域指向其直接后继,若没有,则置为NULL。下面就来看一个建立带表头(若未说明,以下所指链表均带表头)的单链表的完整程序。#include#include/*包含动态内存分配函数的头文件*/#defineN10/*N为人数*/typedefstructnode{charname[20];structnode*link;}stud;stud*creat(intn)/*建立单链表的函数,形参n为人数*/{

3、stud*p,*h,*s;/**h保存表头结点的指针,*p指向当前结点的前一个结点,*s指向当前结点*/inti;/*计数器*/if((h=(stud*)malloc(sizeof(stud)))==NULL)/*分配空间并检测*/{printf("不能分配内存空间!");exit(0);}h->name[0]='';/*把表头结点的数据域置空*/h->link=NULL;/*把表头结点的链域置空*/p=h;/*p指向表头结点*/for(i=0;i

4、*/{printf("不能分配内存空间!");exit(0);}P指向头节点,将P指向当前节点,,回头将当前S又交给Pp->link=s;/*把s的地址赋给p所指向的结点的链域,这样就把p和s所指向的结点连接起来了*/printf("请输入第%d个人的姓名",i+1);scanf("%s",s->name);/*在当前结点s的数据域中存储姓名*/s->link=NULL;/*最重要*/p=s;}return(h);}main(){intnumber;/*保存人数的变量*/stud*head;/*head是保存单链表的表头结点地址的指针*/number=N;head=cre

5、at(number);/*把所新建的单链表表头地址赋给head*/}这样就写好了一个可以建立包含N个人姓名的单链表了。写动态内存分配的程序应注意,请尽量对分配是否成功进行检测。二查找算法#include#include#include/*包含一些字符串处理函数的头文档*/#defineN10typedefstructnode{charname[20];structnode*link;}stud;stud*creat(intn)/*建立链表的函数*/{stud*p,*h,*s;inti;if((h=(stud*)ma

6、lloc(sizeof(stud)))==NULL){printf("不能分配内存空间!");exit(0);}h->name[0]='';h->link=NULL;p=h;for(i=0;ilink=s;printf("请输入第%d个人的姓名",i+1);scanf("%s",s->name);s->link=NULL;p=s;}return(h);}stud*search(stud*h,char*x)/

7、*查找链表的函数,其中h指针是链表的表头指针,x指针是要查找的人的姓名*/{stud*p;/*当前指针,指向要和所查找的姓名比较的结点*/char*y;/*保存结点数据域内姓名的指针*/p=h->link;while(p!=NULL){y=p->name;if(strcmp(y,x)==0)/*把数据域里的姓名和所要查找的姓名比较,若相同则返回0,即条件成立*/return(p);/*返回和所要查找结点的地址*/elsep=p->link;}if(p==NULL)printf("没有查找到该数据!");}main(){intn

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

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

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