本文目录一览:
- 1、数据结构高手来啊~~~谢谢
- 2、什么是单链表,储存上有哪些特点?
- 3、什么是单链表
- 4、数据结构单链表?
数据结构高手来啊~~~谢谢
分太少了
这个是必会的,我这个你应该作为参考。。
#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建立连接。