单链表的整表创建和删除(四)

本文介绍了单链表的创建和删除方法,包括头插法和尾插法两种创建方式的具体实现过程,并提供了完整的示例代码。同时,还详细解释了如何通过循环释放节点来实现单链表的整表删除。

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

单链表的整表创建和删除

一、单链表的整表创建

创建单链表的过程是一个动态生成链表的过程,从“空表”的初始状态起,依次建立各元素结点并逐个插入链表。

单链表整表创建的算法思路如下:

1)声明一结点P 。2)初始化一空链表L 。3)建立一个带头结点的单链表,即让L的头结点的指针指向NULL。4)循环实现后继结点的赋值和操作。

单链表创建的方法有两种:头插法和尾插法。

1、头插法—把新加进的元素放在表头后的第一个位置。具体操作就是首先是新结点的next指向头结点之后,表头的next指向新结点。

头插法的程序如下:
typedef float ElemType;
typedef struct Node
{
	ElemType data;//数据域
	struct Node *Next;//指针域
}Node;
typedef struct Node* LinkList;
void CreateLinkList(LinkList L,int n)
{
	LinkList p;
	int i;

	srand(time(0));
	L = (LinkList)malloc(sizeof(Node));//建立表头
	L->Next = NULL;

	for(i = 0;i < n;i++)
	{
		p = (LinkList)malloc(sizeof(Node));
		p->data = rand()%100 + 1;
		p->Next = L->Next;
		L->Next = p;
	}


}

头插法建立的链表,生成的链表中结点的次序和输入的顺序相反。

2、尾插法—新结点都插入到最后。

尾插法程序如下:
typedef float ElemType;
typedef struct Node
{
	ElemType data;//数据域
	struct Node *Next;//指针域
}Node;
typedef struct Node* LinkList;
void CreateLinkList(LinkList L,int n)
{
	LinkList p,r;
	int i;

	srand(time(0));
	L = (LinkList)malloc(sizeof(Node));//建立表头
	
	r = L;

	for(i = 0;i < n;i++)
	{
		p = (LinkList)malloc(sizeof(Node));
		p->data = rand()%100 + 1;
		r->Next = p;
		r = p;
	}

	r->Next = NULL;
}

二、单链表的整表的删除

单链表整表删除的算法思路如下:

1)声明结点p和q。2)将第一个结点赋值给p,下一结点赋值给q。3)循环执行释放p和将q赋值给p的操作。

单链表整表删除的代码如下:

#define bingo 1
#define error 0

typedef float ElemType;
typedef struct Node
{
	ElemType data;//数据域
	struct Node *Next;//指针域
}Node;
typedef struct Node* LinkList;

int clearList(LinkList L)
{
	LinkList p,q;
    
	p = L->Next;//第一个结点



	while(p)
	{
		q = p->Next;
		free(p);
		p = q;
	}

	L->Next = NULL;
	
	return bingo;
}




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值