vs2022链表的创建和打印(c语言版)

链表

链表和顺序表

链表相较于顺序表在创建和打印上还是比较麻烦的,对于新手来说是一大难点。那为什么还要使用链表呢?主要是顺序表在插入数据和删除数据上显得很麻烦,需要去移动大量数据才能实现一个数据的插入或者删除。而链表采用动态内存的方法,简化了插入与删除这一步骤。

什么是链表?

在c语言中,链表主要是通过构建结构体来实现的,结构体中有两个属性,一是我们要存储的数据,二是下一个结点的地址指针。

相当于在空间存储结构上,链表的结点与结点之间是没有关系的,它通过后面这个指针来将数据连接起来。这样的话,插入与删除就只需要处理这一个结点以及前后结点的连接的问题。

结点

既然,链表是由一个又一个结点构成,那么先来搭建一个结构体出来。

c 复制代码
struct Node
{
	int data;
	struct Node *next;
};

一个数据,一个指针。

创建链表(结点与结点进行连接)

c 复制代码
struct Node* createList()
{
	struct Node *head = NULL;
	struct Node *p, *q=NULL;
	//创建一个n长度的链表
	int n,a;
	scanf_s("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf_s("%d", &a);
		//为p分配一个内存位置
		p = (struct Node*)malloc(sizeof(struct Node));
		p->data = a;
		p->next = NULL;
		//如果头节点是空的,就将p设为头节点
		if (head == NULL) 
		{ 
			head = p; 
		}
		//如果有了头节点,就让上一个暂存的节点连接到这次开辟的节点上
		else 
		{ 
			q->next = p; 
		}
		//q为暂时保存节点
		q = p;
	}
	return head;
}

打印链表

c 复制代码
void readList(struct Node* head)
{
	//遍历整个链表
	struct Node *t;
	t = head;
	while (t != NULL)
	{
		printf("%d\n", t->data);
		t = t->next;
	}
}

主要报错

vs2022这个环境还是比较严苛的,会遇到一些严格的报错。

严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息

错误 C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 单向链表 D:\Cproject\Data_Structure\线性表\单向链表\单向链表\main.cpp 16

这个报错是指它认为scanf可能是不够安全的,建议我们使用scanf_s代替

严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息

错误 C4703 使用了可能未初始化的本地指针变量"q" 单向链表 D:\Cproject\Data_Structure\线性表\单向链表\单向链表\main.cpp 32

这个报错是指q未被初始化,但是问题是我的q是作为一个暂存指针存在的,每次只要接收复制q就可以了,按理说,初始化不初始化影响不大,但是vs2022就是不给我运行。无奈之下,只能在初始化q=NULL。

相关推荐
爱吃生蚝的于勒1 小时前
C语言内存函数
c语言·开发语言·数据结构·c++·学习·算法
失落的香蕉4 小时前
C语言串讲-2之指针和结构体
java·c语言·开发语言
ChoSeitaku6 小时前
链表循环及差集相关算法题|判断循环双链表是否对称|两循环单链表合并成循环链表|使双向循环链表有序|单循环链表改双向循环链表|两链表的差集(C)
c语言·算法·链表
DdddJMs__1357 小时前
C语言 | Leetcode C语言题解之第557题反转字符串中的单词III
c语言·leetcode·题解
娃娃丢没有坏心思7 小时前
C++20 概念与约束(2)—— 初识概念与约束
c语言·c++·现代c++
workflower7 小时前
数据结构练习题和答案
数据结构·算法·链表·线性回归
一个不喜欢and不会代码的码农8 小时前
力扣105:从先序和中序序列构造二叉树
数据结构·算法·leetcode
ahadee9 小时前
蓝桥杯每日真题 - 第11天
c语言·vscode·算法·蓝桥杯
No0d1es9 小时前
2024年9月青少年软件编程(C语言/C++)等级考试试卷(九级)
c语言·数据结构·c++·算法·青少年编程·电子学会
bingw01149 小时前
华为机试HJ42 学英语
数据结构·算法·华为