数据结构与算法——链表的创建,堆栈,队列

本文介绍了链表创建的两种方法:头插法和尾插法。头插法采用堆栈方式,从空表开始,在表头插入节点;尾插法采用队列方式,在表尾插入节点。文中还提供了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

持续分享嵌入式技术,操作系统,算法,c语言/python等,欢迎小友关注支持

前言

本篇文章我们讲述一下链表的创建方法。链表创建的方法分为两种,主要分为头插法,和尾插法,也叫堆栈式和对列式。

建立单链表算法总结:

  • 头插法:在链表的头部插入结点建立单链表,数据读入顺序和线性表中的逻辑顺序正好相反。即先入后出也叫堆栈式。
  • 尾插法:在链表的尾部插入结点建立单链表,数据读入顺序和线性表中的逻辑顺序正好相同。即先入先出也叫对列式

堆栈方式建立单链表(头插法)

每次把新结点插入到链表的头部,使新插入的结点成为第一个实际的元素结点。

数据结构与算法——链表的创建,堆栈,队列

 

头插法建表从一个空表开始,重复读入数据,生成新结点,将读入数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头结点之后,直至读入结束标志为止。

代码实现:

node * creatlistf()
{
  datatype data; node * head, *s; 
  s=(linklist)malloc(sizeof(node)); 
  s->next=NULL; 
  head=s;
  printf(“\n输入数据序列,以0结束:\n"); 
  scanf("%d",&data);
  while (data!=0) { 
  s=(node *) malloc(sizeof(node));
  s->info=data;
  s->next=head->next;  // 新插入的结点成为第一个实际元素结点
  head->next=s;
  scanf("%d",&data); } 
  return head; 
}

队列方式建立单链表(尾插法)

每次把新结点插入到链表的尾部,使新插入的结点成为尾结点。

数据结构与算法——链表的创建,堆栈,队列

 

将新结点插到当前单链表的表尾上。增加一个尾指针r,使之指向当前单链表的表尾。

代码实现:

node* creatlistr( )
{ 
  datatype data; node *head,*s,*r;
  s=(linklist)malloc(sizeof(node)); 
  s->next=NULL;
  head=s; 
  r=s; 
  scanf("%d",&data);
  while (data!=0) { 
  s=(node *)malloc(sizeof(node)); 
    s->info=data; /*产生新结点*/ 
    r->next=s; 
    r=s; 
    scanf("%d",&data); 
  } 
  if (r!=NULL) 
    r->next=NULL; /*处理表尾结点指针域*/
  return head; 
}

好了,以上就是链表创建的方法,分别采用了头插法和尾插法表示,但是这个只是单链表的实现方法,之前有讲过链表和单链表,双链表,循环链表之分,这些会在后面的文章中一一阐述,喜欢文章的朋友可以点赞关注。

如果觉得文章对你有帮助,请点赞关注下。如有错误欢迎指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值