数据算法与结构.ppt
《数据算法与结构.ppt》由会员分享,可在线阅读,更多相关《数据算法与结构.ppt(41页珍藏版)》请在第壹文秘上搜索。
1、2.3 线性表的链式存储结构n特点:n用一组任意的存储单元存储线性表的数据元素n利用指针实现了用不相邻的存储单元存放逻辑上相邻的元素n每个数据元素ai,除存储本身信息外,还需存储其直接后继的信息n结点n数据域:元素本身信息n指针域:指示直接后继的存储位置数据域 指针域结点ZHAOQIANSUNLIZHOUWUZHENGWANGH例 线性表 (ZHAO,QIAN,SUN,LI,ZHOU,WU,ZHENG,WANG)43131NULL3771925数据域指针域LIQIANSUNWANGWUZHAOZHENGZHOU存储地址1713192531374331H头指针线性链表n定义n结点中只含一个指针域
2、的链表叫,也叫单链表实现typedef struct node datatype data; struct node *link;JD;JD *h,*p;datalinkp结点(*p)(*p)表示p所指向的结点(*p).datap-data表示p指向结点的数据域(*p).linkp-link表示p指向结点的指针域生成一个JD型新结点:p=(JD *)malloc(sizeof(JD);系统回收p结点:free(p)ha1a2an h空表头结点.线性链表n头结点:在单链表第一个结点前附设一个结点叫。是整个线性链表的第一个结点,它的数据域可以放数据元素,也可以放线性表的长度等附加信息,也可以不存储
3、任何信息n头结点指针域为空表示线性表为空。线性链表n头指针:n指向链表中的第一个结点;n首元结点:n线性表的第一个元素结点单链表的基本运算n查找:查找单链表中是否存在结点X,若有则返回指向X结点的指针;否则返回NULLn算法描述n算法评价While循环中语句频度为若找到结点X,为结点X在表中的序号否则,为n nOnTJD *dlbcz(JD *h,int x)JD *p; p=h;while(p!=NULL & p-data!=X)p=p-link;return (p); 单链表的基本运算n插入:在线性表两个数据元素a和b间插入x,已知p指向an算法描述n算法评价pabxss-link=p-l
4、ink;p-link=s; 1OnT/数据元素的查找,x为要查找的元素void dlbcr(JD *p,int x) JD *s;s=(JD*)malloc(sizeof(JD);s-data=x;s-link=p-link;p-link=s;单链表的基本运算n删除:单链表中删除b,设p指向an算法描述n算法评价pabc 1OnTp-link=p-link-link;void dlbsc(JD *p) JD *q;if(p-link!=NULL)q=p-link; p-link=q-link; free(q); nOnT算法评价h头结点an 0h头结点an-10an a2.h头结点an-10a
5、n ha1a2头结点an .0Ch2_3.ch头结点0单链表的基本运算n动态建立单链表算法:设线性表n个元素已存放在数组a中,建立一个单链表,h为头指针n算法描述JD* dlbjl(int a,int n)JD *s,*h,*p;int i;h=(JD*)malloc(sizeof(JD);h-data=0;h-link=NULL; for(i=n;i0;i-)s=(JD*)malloc(sizeof(JD); s-data=ai-1; s-link=h-link; h-link=s;return (h);单链表n单链表特点n它是一种动态结构,整个存储空间为多个链表共用n不需预先分配空间n指针
6、占用额外存储空间n不能随机存取,查找速度慢n为什么引入头结点n在一些针对链表的算法中,(如查入,删除、及建表)对其中第一个结点和其余结点的操作,因结构方面的原因而存在差异,从而使算法的设计不方便,加入头结点,使得线性表中第一个元素对应的首元结点变成了链表中的第二个结点,使所有元素结点具有相同的结构,方便算法和程序设计。循环链表(circular linked list)n循环链表是表中最后一个结点的指针指向头结点,使链表构成环状n特点:从表中任一结点出发均可找到表中其他结点,提高查找效率n操作与单链表基本一致,循环条件不同n单链表p或p-link=NULLn循环链表p或p-link=Hhh空表
7、双向链表(double linked list)n单链表具有单向性的缺点,在查找某节点的直接前趋的时间复杂度将达到O(n)。n结点定义typedef struct node datatype element; struct node *prior,*next;JD;priorelementnextL空双向循环链表:非空双向循环链表: LABbcapp-prior-next= p= p-next-proir;bcvoid del_dulist(JD *p)p-prior-next=p-next; p-next-prior=p-prior; free(p);算法描述算法评价:T(n)=O(1)p-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 算法 结构
第壹文秘所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。


重点工作绩效评估自评表.docx
