首页 > 编程知识 正文

实战php数据结构基础之单链表,数据结构带头结点的单链表

时间:2023-12-24 12:11:52 阅读:321705 作者:CBFU

本文目录一览:

数据结构高手来啊~~~谢谢

分太少了

这个是必会的,我这个你应该作为参考。。

#include iostream

using namespace std;

typedef struct node

{

int data;

node *next;

}node,*list;

list CreateLinklist()

{

list head=NULL,tail=NULL,temp=NULL;

int n,data;

cinn;

head=new node;

cindata;

head-data=data;

head-next=NULL;

tail=head;

for(int i=0;in-1;i++)

{ temp=new node;

cindata;

temp-data=data;

temp-next=NULL;

tail-next=temp;

tail=temp;

}

tail-next=NULL;

return head;

}

void OutputLinklist(list head)

{

list temp;

temp=head;

while(temp)

{

couttemp-data" ";

temp=temp-next;

}

coutendl;

}

list ContLinklist(list a1,list a2)

{

list tail,a3;

tail=a1;

a3=a1;

while(tail-next)

{

tail=tail-next;

}

tail-next=a2;

return a3;

}

void main()

{

list a1,a2,a3;

a1=CreateLinklist();

a2=CreateLinklist();

a3=ContLinklist(a1,a2);

OutputLinklist(a3);

}

什么是单链表,储存上有哪些特点?

单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。

链接存储方法

链接方式存储的线性表简称为链表(Linked List)。

链表的具体存储表示为:

① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)

② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link))

链式存储是最常用的存储方式之一,它不仅可用来表示线性表,而且可用来表示各种非线性的数据结构。

什么是单链表

单链表

单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。

链表中的数据是以节点来表示的,每个节点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个节点的地址数据。

以“结点的序列”表示线性表称作线性链表(单链表)

单链表是链式存取的结构,为找第 i 个数据元素,必须先找到第 i-1 个数据元素。

因此,查找第 i 个数据元素的基本操作为:移动指针,比较 j 和 i

数据结构单链表?

举一个现实中的例子你就明白了:

假设有apcde5个小朋友依次手拉着手组成了一个链表a-p-c-d-e,现在来了一个小朋友q,老师要他插到p的后面,如果他只拉着p的手,而不拉着c的手,那链表是不是就断了,变成了两个链表a-p-q和c-d-e。

所以,这里的q-next=p-next;的意思就相当于让q的一只手先拉着c的一只手(此时的c一只手拉着p和q,另一只手拉着d),而p-next=q;的意思就相当于让p松开与c的手转而拉着q的另一只手,这样就形成了一个完整的链表。

当然,在现实中q和p、c中的谁先拉手是不重要的,但对于链表,q必须先和c拉手,因为只有通过p-next才能找到c,如果q先和p拉手(即执行p-next=q;),那链表就断了,再也没有办法找到c了(因为现在的p-next是q而不是c了,也没有其它指针指向c)。

总之记住,在链表中插入一个结点时顺序很重要,是先连后断。

比如,要将x插在p和q之间,必须先令x和q连接起来,然后断开原来的p和q之间的连接,转而令p和x建立连接。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。