C语言之结构体与单链表

[C语言]使用结构体+单链表创建简单的学生通讯录 (1)建立:以线性表的存储结构方式建立学生通讯录。 (2)查询:以学生的学号查找相关学生信息,如果查找成功,则输出查找到的学生信息。 (3) 修改:将指定学号对的学生成绩修改为给定的值 (4)插人:将指定的新学生信息插人到通讯录线性表中 (5)删除:从通讯录线性表中删除指定学号的学生信息。 (6)输出:输出通讯录线性表中的所有学生信息。 #include <stdio.h> #include<stdlib.h> #include <string.h> typedef . 阅读详情

结构体(抽象)和数组一样是聚合类型,进行整体初始化只有一次是在定义的时候
//自我理解结构体就是一种自己定义的数据类型
定义时建议使用typedef(类型重命名):

typedef struct Student
{
	char name[20];
	int age;
}Stu; //此时Stu是数据类型

结构体成员可以是变量,数组,指针,结构体。

结构体自应用只可以是指针的形式;
eg:

struct Node
{
	int value;
	struct Node *next;
}node1;

访问:
1.以 . 号的方式:变量.
eg:
node1.value = 10;
node1.next = Null;
2.以 -> 的方式:指针->

问题:class与struct区别??

单链表:不是连续的存储集合(逻辑上连续,物理上不连续)
数组:是连续的存储集合(逻辑上连续,物理上连续)

带头结点的单链表:

单链表的基本操作:
首先定义一个结构体:

typedef struct Node
{
	int data;
	struct Node* next;
}Node,*Plist;
  1. 初始化链表(如果你理解传值传址请忽略下面这段话)
    说一下我在写这个函数遇到的问题,就是形参为什么用Plist plist,实参为什么用&head的问题;
    其实答案很简单,传址后可以改变实参中的值,也就是将一个个结点串联起来
void InitList(Plist plist)
{
	if(plist == NULL)
	{
		return;
	}
	plist->next = NULL;
}
  1. 给链表插入数据
    首先要有得到一个节点的函数;
Node *GetNode(int val)
{
	Node* p =(Node *)malloc(sizeof(Node));
	if(p != NULL)
	{
		p->data = val;
		p->next = NULL;
	}
	return p;
}
1.头插法
void InsertHead(Plist plist,int val)
{
	Node * pcur = GetNode(val);
	pcur -> next = plist->next;
	plist->next = pcur;
}
2.尾插法
void InsertTail(Plist plist,int val)
{
	Node *pcur = plist;
	while(pcur->next != NULL)
	{
		pcur = pcur -> next;
	}
	Node *p = GetNode(val);
	pcur->next = p;
}
  1. 输出链表的长度(不包含头节点)
int GetLen(Plist plist)
{
	Node* pcur = plist->next;
	int count = 0;
	while(pcur != NULL)
	{
		count++;
		pcur = pcur->next;
	}
	return count;
}
  1. 输出链表
void Show(Plist plist)
{
	Node* pcur = plist->next;
	while(pcur != NULL)
	{
		printf("%d ",pcur->data);
		pcur = pcur->next;
	}
}

C迷惑补充:
1.[]自带解引用
2…h文件用于函数的声明
3.c语言是一个弱类型语言;Java是强类型语言;

数据结构-线性表-单链表-结构体定义/后插法建立/前插法/删除/查找/合并有序单链表-c语言 文章目录前言一、单链表的结构体定义二、建立单链表1.尾插法2.前插法三、单链表的查找和删除四、合并有序单链表1.尾插法合并不递减单链表得不递减单链表2.前插法合并不递减单链表得不递增单链表 前言 提示:数据结构-线性表-单链表-结构体定义/后插法建立/前插法/删除/查找/合并有序单链表-c语言 提示:以下是本篇文章正文内容,下面案例可供参考 一、单链表的结构体定义 //单链表的结构体的定义 1.数据 2.指向下一个结点的指针 typedef struct LNode{ int data;//数据 . 阅读详情

相关推荐

数据结构 创建结构体学生表 c语言

以单链表形式创建一个学生表,并能实现相关的创建、销毁、清空、查找、插入和删除等算法。 需要定义学生表的结构体 linklist.h代码: typedef struct link_node//定义结构体,包含学生学号 语文 数学 英语成绩 { int number,cgrade,mgrade,egrade; struct link_node *next; }node,*linklist;...

Ben的博客 5598

深究C语言4.链表和结构体

结构体很难?链表很难?快点来学,学完就都懂了。

炼丹上岸 6012

C语言实现单链表:结构体与指针应用指南

在C语言中,结构体(struct)是一种复合数据类型,它允许用户将不同类型的数据项组合成一个单一的类型。结构体的定义提供了一种方法,可以将数据项组合在一起,而这些数据项可能在逻辑上属于一个单元,但它们的数据类型并不相同。结构体为处理复杂数据提供了一种方便的手段,使程序能够以一种更有组织的方式管理数据。例如,在一个系统中,每个员工都有一些基本信息,如姓名、年龄、薪水和职位。所有这些信息可以被组织为一个员工结构体,以便更高效地进行数据管理和操作。结构体的定义通常如下所示:int age;

weixin_42466723的博客 1114

结构体和链表

1)简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型

小米mm修仙路 1947

TI DSP TMS320F280025 Note1:工程模板Template创建

该方法新建的工程支持寄存器开发,同时也支持库函数开发,新建后移动该工程也不需要重新修改路径,路径使用变量定义,使用方便、移植性能高

weixin_52849254的博客 2302

TPL5010硬件看门狗电路

在做一些采集频率很低的产品的时候,会考虑电池供电,比如表、电气表等,为了控制功耗,往往会在设备不需要工作的时候让它进入低功耗模式。为了设备的稳定性,避免死机后无法恢复,必须配置看门狗,一般的看门狗芯片,喂狗间隔时间是几秒钟。这样在喂狗和低功耗之间就产生了一个矛盾,频繁的喂狗就需要频繁的醒过来,这样功耗就很难做到很低。这颗看门狗芯片,特别适合上面的应用。2小时的间隔意味着主控芯片每2小时醒过来喂狗一次即可,而在2.5V供电的情况下,功耗仅仅35nA,几乎可以忽略不计。

zxm8513优快云博客 3306

C语言基础(14)结构体和链表

结构体对齐是指编译器在内存中为结构体的各个成员分配内存时,可能会在成员之间插入填充字节,以使每个成员的起始地址都能满足其对齐要求。有头链表(带头结点的链表)是指在链表的开始部分有一个特殊的节点,称为首节点,这个节点不存储有效数据,仅用于指向链表的第一个节点,从而简化链表的操作。2、结构体成员按照结构体成员声明先后次序依次存放,并且每个成员的首字节放置的位置必须能够整除成员的字节数;箭头运算符的左边是指向结构体的指针,右边是结构体的成员。值域是这个节点所携带的数据,指针域存放的是下一个节点的地址。

weixin_68239724的博客 2185

【定位模块项目实战】gnss_localizer、lidar_localizer功能包解析

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、1.2.3.4.二、1.2.3.4.三、1.2.3.4.四、1.2.3.4.总结参考资料 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对**【无人驾驶autoware项目实战】感知–定位模块**做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章 提示:以下是本篇文章正文内容 一、 1. 2. 3. 4. . . 二、

qq_35635374的博客 1931

C语言简单入门之结构体和链表

C语言的链表也是一个很重要很难啃的骨头,我是这么觉得的! 以下只是个人对链表的总结和记录方便日后复习所用,如有错误,请留言狠批,谢谢! 先说下链表的简单实现:  如上图,我们定义一个结构体: 1,2,3,4,5是结构体数据。a,b,c,d,e则是指针变量,在链表中是1.next的表达方式 首先,结构体的名字指向的是链表的首地址(也就是1的地址,而a的存放是2的地址),这样指下去。一个...

maoye的博客 1万+

【AI智能体】基于OpenCode 搭建Skills环境与项目实战开发详解

基于OpenCode 搭建Skills环境与项目实战开发详解

congge 8899

喷涂机器人系列编程:ABB IRB 5500_(7).喷涂质量控制与优化

通过编程手段对ABB IRB 5500喷涂机器人进行质量控制和优化,可以显著提高喷涂的均匀性和附着力,减少涂层缺陷。具体的方法包括喷涂参数的调整、路径规划的优化、喷涂效果的检测与反馈,以及喷涂参数的动态调整。综合评估系统可以进一步确保喷涂质量的稳定性和一致性,帮助汽车制造企业提高产品质量和生产效率。

zhubeibei168的博客 851

C语言:结构体数组与链表区别

题目:学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,请 编写函数fun,其功能是:把分数最低的学生数据放入b所指的数组中,注意:分数 最低的学生可能不止一个,函数返回分数最低的学生人数。 编译环境:VS2010 #include<stdio.h> #define N 16 typedef struct { char num[10]; int s; }STREC; int fun(STREC *a, STREC *b) { /******begin******/ /

快乐修勾的博客 1409

【Proteus仿真】51单片机+DAC0832+数码管制作0-25V电压可调

【Proteus仿真】51单片机+DAC0832+数码管制作0-25V电压可调

perseverance51博客 2117

2025-03-19 学习记录--C/C++-C语言-单链表的结构体定义 + LNode * 和 LinkList 的区别

C语言-单链表的结构体定义 + LNode * 和 LinkList 的区别

weixin_48850734的博客 1189

openssl命令数据摘要详解(SM3、sha256、MD5、dss1、mdc2、ripemd160)

SM3是由中国密码学家设计的密码哈希函数,是中国国家密码管理局(National Cryptographic Authority,简称:CNCA)颁布的国家密码算法标准。SM3属于密码杂凑函数家族,它可以计算任意长度的消息并生成固定长度(256比特,即32字节)的哈希值。SM3生成的哈希值长度为256比特(32字节),不管输入消息的长度如何,输出始终是固定的。SM3将输入数据划分为512比特(64字节)的分组,并对每个分组进行处理。

N阶二进制的博客 4460

【Envi遥感图像处理】022:envi时空分析工具的使用

本文介绍了ENVI软件中的时空分析工具应用,以美国拉斯维加斯1975-2014年的9期Landsat数据为例。主要内容包括:1)时空分析概念,即对空间相关时间序列数据的建模分析;2)构建时序数据流程,通过添加栅格、时间排序等步骤生成.series格式时序文件;3)时序数据查看方法,包括动画播放、添加注记及保存视频;4)多源数据统一处理工具,解决坐标系、空间范围不一致问题。该工具可用于冰川变化、植被覆盖等时空变化研究。

智慧空间实验室 269

C语言:结构体和单链表实现学生数据管理

1、建立学生结构体数组,存放4个学生信息,循环调用插入函数,建立整表。2、任意位置插入一个新学生。变量e是学生结构体变量。创建单链表,存储4个学生信息(年龄,分数,姓名)。4、单链表逆置后将学生信息输出。3、任意位置删除一个学生。主函数(main.c)

m0_58572142的博客 621

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C语言单链表和结构体的结合

链表与结构体的结合,可以很好的方便输入输出,以后使用链表时只需要将结构体的信息稍作修改就可以使用,非常方便!!! 下面是写学生学号和姓名的结构体与链表的结合create函数! 1#include “stdio.h” 2 3typedef struct node{ 4 int number; 5 char name[20]; 6 }node; 7

qq_17797501的博客 2009

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

结构体实现单链表(C语言)

我们知道顺序表在内存中是连续存放的一种线性表,这次的主角链表则是不同于顺序表。链表是一种是通过链表中的指针链接次序实现的在物理存储单元上非连续、非顺序的存储结构现在看来这个定义可能有点抽象,现在就让我们来解析一下链表的存储方式。

Ruaaa_iiiiiiiii的博客 2874

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C语言数据结构 — 链式线性表基础理解(从指针&结构体到单链表)

而在这段代码中(PointerChange函数及/*二级指针*/之后的代码),我们将指针p的地址,及变量b的地址传入PointerChange函数,在函数中,我们将p的存储内容(即*ph 的值)改为了b的地址(65fe04)。那么指针变量的“抽屉”同样也有自己的地址和存储内容,只是这个抽屉里放的是其他抽屉的编号标签。在第一段代码中(ValueChange函数及/*一级指针*/之后的代码),我们将变量a的地址传入ValueChange函数,在函数中,我们改变了变量a的存储内容(即*add的值)。

zqy20011126的博客 1085

QT-C语言结构体建立单链表

QT项目新建 新建文件: 打开后,有代码 #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); } 什...

weixin_45676363的博客 2065

C语言:结构体、指针、单链表

c语言单链表

蔡林浩的博客 303

【C语言】用结构体实现动态单链表

注 1.嵌套声明结构体类型,并用 typedef 重命名时,必须声明结构体的名字,如下: typedef struct Students { int num; int score; struct Students *next;// 或 Students *next; }Students; 而不能这样: typedef struct { int num; int score; Students *next; }Students; 2.使用 malloc函数需要引入 std...

KinglakeINC的博客 755

C语言中不用结构体写链表,【C语言】用结构体实现动态单链表

源代码#include#include#include//使用 malloc 需要引入 stdlib.h 头文件#define NUM 3typedef struct Students//定义 Students 链表{int num;int score;Students *next; //指向下一个元素的指针}Students;int main(){//建立动态链表Students *head,*...

weixin_39841825的博客 355

c语言结构体单链表转换结构体数组,c语言数据结构,静态链表,结构体数组

众所周知,我的博客是写给自己看的。在敲"严版"数据结构的静态数组时遇到的一些问题,并给予了改进,在此记录一下前言:没有实现教材上那个(A-B)v(B-A)的例子,实现了增加、删除等。总体上把握了静态数组的基本思想后实现这些例子都是很简单的。作了一点小改进正文:改进:把一个静态数组分为两条形式上的链表,一条是已分配空间,一条是未分配的空间。从尾部开始,链表的头标记为arr[10].cur遍历可获得A...

weixin_39947908的博客 788

C语言:单链表

一.结构体的不同写法 1.结构体的定义 struct 结构体类型名 结构体变量列表; 结构体四种写法 1. struct stu{ ......};//保留结构体类型名 2. struct { .....}stu[10];//省略结构体类型名 3. typedef struct stu{ .......}STU; stu s[10]; STU s[10];//即使重命名后也可以用原来的名字定义 4. typedef struct { .

快乐修勾的博客 1234
上一篇: C语言之动态内存管理
下一篇: C语言之内存布局
Young-_-D
博客等级 码龄8年 62粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值