数据结构-5.单链表的建立

本文介绍了如何使用尾插法和头插法创建带头结点的单链表,包括尾指针的应用和头插法实现的逆序特性。通过实例演示了如何依次插入数据并维护链表结构,适合理解链表操作的基本原理。

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

一.带头结点的单链表的建立-尾插法

  1. 初始化一个单链表。
    再复习一下初始化一个单链表:
//初始化一个带头结点的单链表
typeset struct LNode{
	ElemType data;
	struct LNode *next;
}LNode,*LinkList;
bool InitList(LinkList &L){
	L=(LNode*)malloc(sizeof(LNode));
	if(L==NULL)
		return false;
	L—>next=NULL;
	return true;
}
void main(){
	LinkList L;
	InitList(L);
	//。。。。
  1. 依次取得数据元素插入到表尾。
    设置一个表尾指针,每次执行后插操作。
LinkList List_TailInsert(LinkList &L){ //尾插法建立单链表
	int e;
	LNode *s,*r;                       //r是尾指针
	L=(LinkList)malloc(sizeof(LNode)); //建立头结点
	L->next=NULL;                      //初始化为空链表
	r=L;                               //尾指针先指向头结点
	scanf(%d”,&e);
	while(e!=996){                     //输入结束的标识,当输入996时单链表建立完成(不包括996元素)
		s=(LNode*)malloc(sizeof(LNode));//分配结点
	    s->data=e;
		r->next=s;
		r=s;                           //尾指针指向当前结点(也是最后一个结点)
		scanf(%d”,&e);
	}
	r->next=NULL;                     //尾指针指向空
	return L;                         //返回这个建立好的单链表
}	

二.带头结点的单链表的建立-头插法

核心思想就是每次对头结点执行后插操作。

LinkList List_HeadInsert(LinkList &L){
	int e;
	LNode *s;
	L=(LinkList)malloc(sizeof(LNode));
	L->next=NULL;                   //此句必须加!否则头指针指向未知区域,影响尾结点指向
	scanf(%d”,&e);
	while(e!=996){
		s=(LNode*)malloc(sizeof(LNode));
		s->data=e;
		s->next=L->next;
		L->next=s;
		scanf(%d”,&e);
	}
	return L;
}

头插法是在头结点后面依次插入,所以遍历结点时输出为逆序。在后面单链表的逆置也是运用此思想。


总结一下:尾插法注意设置尾指针,头插法的运用是单链表的逆置。两种方法的核心都是给定结点的后插操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值