前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >头插法和尾插法

头插法和尾插法

作者头像
大忽悠爱学习
发布2021-03-02 14:29:09
7990
发布2021-03-02 14:29:09
举报
文章被收录于专栏:c++与qt学习

头插法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
typedef struct LinkNode
{
	int num;
	LinkNode* next;
}Lk, * lk;
//初始化头节点
lk init_headNode()
{
	//生成一个头节点
	lk headNode = (lk)malloc(sizeof(Lk));
	//检查分配空间是否成功
	if (headNode == NULL)
	{
		return NULL;
	}
	//数据域可以不用维护
	headNode->next = NULL;
	return headNode;
}
//头插法
void insert_LinkList(lk headNode,int length)
{
	//检查传入的头节点是否为空
	if (headNode == NULL)
	{
		return ;
	}
	int val = 0;
	int index = 0;
	for (int i = 0; i < length; i++)
	{
		lk  newNode = (lk)malloc(sizeof(Lk));
		printf("请输入第%d个值:\n", (index++)+ 1);
		scanf("%d", &val);
		newNode->num = val;
		newNode->next = NULL;
		//下面两行代码不能反
		newNode->next = headNode->next;
		headNode->next = newNode;
	}

}
//遍历链表
void outputLinkList(lk headNode)
{
	if (headNode == NULL)
		return;
	//创建一个指针指向当前节点
	lk curNode = headNode->next;
	while (curNode)
	{
		printf("%d\n", curNode->num);
		curNode = curNode->next;
	}
}
int main()
{
	lk headNode = init_headNode();
	int length = 0;
	printf("请输入所要输入的元素个数:\n");
	scanf("%d", &length);
	insert_LinkList(headNode,length);
	printf("打印链表:\n");
	outputLinkList(headNode);
	return 0;
}
在这里插入图片描述
在这里插入图片描述

尾插法:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
typedef struct LinkNode
{
	int num;
	LinkNode* next;
}Lk, * lk;
//初始化头节点
lk init_headNode()
{
	//生成一个头节点
	lk headNode = (lk)malloc(sizeof(Lk));
	//检查分配空间是否成功
	if (headNode == NULL)
	{
		return NULL;
	}
	//数据域可以不用维护
	headNode->next = NULL;
	return headNode;
}
//尾插法
void insert_LinkList(lk headNode,int length)
{
	//检查传入的头节点是否为空
	if (headNode == NULL)
	{
		return ;
	}
	int val = 0;
	int index = 0;
	//创建一个尾指针,指向链表尾部,一开始头部即尾部
	lk endNode = headNode;
	for (int i = 0; i < length; i++)
	{
		printf("请输入第%d个数据:\n", (index++) + 1);
		scanf("%d", &val);
		lk newNode = (lk)malloc(sizeof(Lk));
		newNode->num = val;
		newNode->next = NULL;

		//下面两行顺序不能反
		endNode->next = newNode;
		endNode = newNode;
	}
	//因为我们上面已经写了newNode->next=NULL
	//因此下面这句话就可以不写
	//当尾指针指向最后一个节点的时候,要将他的next指针置空,防止出现野指针
	endNode->next = NULL;
}
//遍历链表
void outputLinkList(lk headNode)
{
	if (headNode == NULL)
		return;
	//创建一个指针指向当前节点
	lk curNode = headNode->next;
	while (curNode)
	{
		printf("%d\n", curNode->num);
		curNode = curNode->next;
	}
}
int main()
{
	lk headNode = init_headNode();
	int length = 0;
	printf("请输入所要输入的元素个数:\n");
	scanf("%d", &length);
	insert_LinkList(headNode,length);
	printf("打印链表:\n");
	outputLinkList(headNode);
	return 0;
}
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档