链表头部插入节点

之前我们谈到过链表的实现,现在我们就用代码实现链表的第一种情况,头部插入节点。

image.png

我们就按照这个图创建先创建头部插入节点

#include<stdio.h>
#include<stdlib.h>
#pragma warning (disable:4996)
struct Node
{
	int data;
	struct Node* link;
};
struct Node* head;//头节点
void Insert(int x);
void Printf();
int main()
{
	head == NULL;
	int x,n;
	printf("请输入你要插入的节点个数\n");
	scanf("%d", &n);

	for (size_t i = 0; i < n; i++)
	{
		printf("输入你要插入的链表数据\n");
		scanf("%d", &x);
		Insert(x);
		Printf();
	}
}
void Insert(int x)
{
	Node* temp = (Node*)malloc(sizeof(Node));
	temp->data = x;
	temp->link = head;
	head = temp;
}
void Printf()
{
	Node* temp = head;
	printf("List is");
	while (temp!=NULL)
	{
		printf(" %d ", temp->data);
		temp = temp->link;
	}
	printf("\n");
}
  

先创建一个头节点指针置NULL代表链表现在为空,我们通过insert函数给增加的节点分配内存,然后让节点的link指向head(此时head是NULL) 再将head指向此节点,我们大致上就创建出了下图的节点

image.png

此时已经有一个节点,head!=NULL 通过
temp->link = head;
head = temp;
我们可以巧妙地将插入节点的link指向下一个节点,同时又将head指向插入的节点。

image.png

head指向是指向后面节点的,所以我们新创建的temp可以直接指向head,也就是指向了下一个节点。
代码里面我将head作为全局变量方便使用,如果我们将head作为局部变量,我这里简单介绍一下,前面都有介绍过解引用和引用
1.通过参数值传递insert时,我们不会修改head的值,这是不被允许的,我们可以把head返回出来,然后再传递给print
2.通过二级指针解引用,达到修改head的值,此方法不用返回
head指针

网站标题:CV鼻祖洋芋

原创文章,作者:locus,如若转载,请注明出处:https://blog.cvpotato.cn/forward-code/c-2/135/

本博客所发布的内容,部分为原创文章,转载注明来源,网络转载文章如有侵权请联系站长!

(0)
上一篇 2024年11月14日 下午2:52
下一篇 2024年11月14日 下午3:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注