您的位置:首页 > 其它

关于链表的总结以及其作用

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;


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链表