推广 热搜: 产品  让人  哪有  显示器  牛奶  也就  面板  关系  站在  爸爸 

尾插法建立单链表 、尾插法建立单链表的算法

   日期:2023-04-09     浏览:54    评论:0    
核心提示:C语言如何创建单链表?C语言创建单链表如下:#include"stdio.h"#include"stdlib.h"#include"malloc.h"#include "iostream.h"type

C语言如何创建单链表?

C语言创建单链表如下:

#include"stdio.h"

#include"stdlib.h"

#include"malloc.h"

#include "iostream.h"

typedef struct node

{

int  data;

node * next;

}node , * List;

void create(int n)

{

int c;

List s,L;

L=(List)malloc(sizeof(node));

L-next=NULL;

printf("请输入第1个数据:");

scanf("%d",c);

L-data=c;

for(int i=2;i=n;i++)

{

s=(List)malloc(sizeof(node));

printf("请输入第%d个数据:",i);

scanf("%d",c);

s-data=c;

s-next=L;

L-next =s;

}

printf("链表创建成功!");

}

void main()

{

int n;

printf("请你输入链表的个数:");

scanf("%d",n);

create(n);

}

单链表创建方法:

单链表的建立有头插法、尾插法两种方法。

1. 头插法

单链表是用户不断申请 存储单元和改变链接关系而得到的一种特殊 数据结构,将链表的左边称为链头,右边称为链尾。头插法建单链表是将链表右端看成固定的,链表不断向左延伸而得到的。头插法***得到的是尾结点。

由于链表的长度是随机的,故用一个while循环来控制链表中结点个数。假设每个结点的值都大于O,则循环条件为输入的值大于o。申请 存储空间可使用malloc()函数实现,需设立一申请单元 指针,但malloc()函数得到的指针并不是指向 结构体的指针,需使用 强制类型转换,将其转换成结构体型指针。刚开始时,链表还没建立,是一空链表,head 指针为NULL。

链表建立的过程是申请空间、得到数据、建立链接的循环处理过程。

2. 尾插法

若将链表的左端固定,链表不断向右延伸,这种建立链表的方法称为尾插法。尾插法建立链表时,头 指针固定不动,故必须设立一个搜索指针,向链表右边延伸,则整个算法中应设立三个链表指针,即头指针head、搜索指针p2、申请单元指针pl。尾插法***得到的是 头结点。

单链表的创建-头插法和尾插法

单链表的创建一般主流分为两种创建方式:头插法和尾插法。

1)创建头节点,维护head指针(引用)来指向头节点;

2)newNode表示待插入节点,维护newnode指向新节点;

3)

case1:当链表为空时,即首次插入新节点,将head.next指向新插入节点,即 head.next = newNode;

case2:如果不是首次插入新节点,将新节点插入到head和head.next指向节点之间,即

newnode.next = head.next;

head.next = newNode;

1)创建头节点,维护head指针(引用)来指向头节点;

2)newNode表示待插入节点,维护tail指针,指示链表尾节点,当tail.next == null时,表示tail指向尾节点;

3)

case1:当链表为空时,即首次插入新节点,将head.next指向新插入节点,即 head.next = newNode;

case2:如果不是首次插入新节点,需要遍历整个链表定位到尾节点,并将新节点插入到尾节点之后,即

tail.next = newNode;

如何创建单链表?

建立单链表的常用方法有两种:头插法建表、尾插法建表

建立单链表的常用方法有两种。下面以顺序存储为例来叙述。

(1) 头插法建表

该方法从一个空表开始,读取数组a中的字符,生成新结点,将读取的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头上,直到结束为止。算法如下:

void CreateListF(Snode *L, ElemType a[], int n)

{ Snode *s; int i;

L = (Snode *) malloc(sizeof(Snode));

L-next = NULL;

for (i=0; in;i++)

{  s = (Snode *)malloc(sizeof(Snode));

s-data = a[i];

s-next = L-next;

L-next = s;

}

}

(2) 尾插法建表

头插法建立链表虽然算法简单,但生成的链表中结点的次序和原数组元素的顺序相反,若希望两者次序一致,可采用尾插法。该方法是将新结点插到当前链表的表尾上,为此必须增加一个尾指针r,使其始终指向当前链表的尾结点。算法如下:

void CreateListR(Snode *L, ElemType a[], int n)

{ Snode *s, *r; int i;

L = (Snode *) malloc(sizeof(Snode));

L-next = NULL;

r = L;

for (i=0; in;i++)

{  s = (Snode *)malloc(sizeof(Snode));

s-data = a[i];

r-next = s;

r = s;

}

r- next = NULL;

}

尾插法建立单链表的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于尾插法建立单链表的算法、尾插法建立单链表的信息别忘了在本站进行查找喔。

原文链接:http://www.lingmov.com/news/show-9550.html,转载和复制请保留此链接。
以上就是关于尾插法建立单链表 、尾插法建立单链表的算法全部的内容,关注我们,带您了解更多相关内容。
 
标签: 链表 节点 指针
打赏
 
更多>同类资讯
0相关评论

推荐资讯
网站首页  |  VIP套餐介绍  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  手机版  |  SITEMAPS  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报