链表头部插入节点

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

链表头部插入节点

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

#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");
}
C++

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

链表头部插入节点

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

链表头部插入节点

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

C语言

链表的实现

2024-11-14 14:52:11

C语言

链表任意位置插入节点

2024-11-14 15:00:33

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索

Powered by atecplugins.com