关于链表的总结以及其作用
2017-05-13 17:58
267 查看
一、链表是什么
1、链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,有一系列结点(地址)组成,结点可动态的生成。2、结点包括两个部分:一、存储数据元素的数据域(内存空间),二、存储指向下一个结点地址的指针域。
3、相对于线性表顺序结构,操作复杂。
二、链表的作用
1、实现数据元素的存储按一定顺序储存,允许在任意位置插入和删除结点。2、包括单向结点,双向结点,循环接点
3、c/c++/jave都可以实现
三、链表的优缺点
优点、链表实现数据元素储存的顺序储存,是连续的缺点、因为含有大量的指针域,所以占用空间大,同时因为只有头结点(后面说明)是明确知道地址的,所以查找链表中的元素需要从头开始寻找,非常麻烦。四、代码的实现(c++为例)
结点格式struct 结点的类型名 { 数据成员的定义; struct 结点类型名 *指针名; }
先建立一个链表结点结构(以学生链表为例)
struct student { string name; float score; struct studeng *next; }
typedef student NODE;
1、头结点
链表的第一个结点,不储存数据,为方便查询设立的结点。若头结点指针域为空,链表为空。NODE *newp,*head,*p; newp=new student; head=newp; head->next=NULL;
2、创建新结点
newp=new student
3、插入新结点
void InsertNode(NODE *p,NODE *newp) { newp->next=p->next; p-next=newp; }
4、删除结点
void DelNode(NODE *p) { NODE *q;//临时结点 if(p->next!=NULL){ q=p->next; p->next=q->next; delete q; } }
5、查询(按关键字小于key)
NODE *Search(NODE *head,int key) { NODE *p; p=head; while(p->next!=NULL) { if(p->next->scorce<key) return p; p=p->next; } return p;
相关文章推荐
- 关于DELPHI中的类对象以及类指针简单探讨总结。
- 关于字符集--总结,补遗以及问题
- 关于oracle的表空间,分区表,以及索引的总结
- 总结关于工程师同志们接单应该注意的事项以及说说我在接单时候遇到的种种囧事(原创作者:gooogleman)
- 判断链表是否有环以及找出环的入口点知识总结
- 关于javaMail中标题以及发件人乱码的问题总结
- 关于gcc、glibc和binutils模块之间的关系,以及在现有系统上如何升级的总结
- 关于oracle的表空间,分区表,以及索引的总结
- 【总结】PHP关于VC9和VC6以及Thread Safe和Non Thread Safe版本的选择
- 关于CKEditor与CKFinder配合使用以及一些注意点总结
- 关于gcc、glibc和binutils模块之间的关系,以及在现有系统上如何升级的总结
- 关于批处理以及批处理常用命令的总结
- 总结一下最近关于domain object以及相关的讨论
- 关于oracle的表空间,分区表,以及索引的总结
- 关于Oracle数据库的用户对象配置以及数据镜像的总结--转载于项目组周朝勇笔记
- 关于Oracle数据库的用户对象配置以及数据镜像的总结
- 关于oracle的表空间,分区表,以及索引的总结
- 关于TSVNCache.exe进程的作用以及如何停止
- 关于oracle的表空间,分区表,以及索引的总结
- Android中关于dip和px以及转换的总结(重点推荐文章)