C语言中单链表的示例分析
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关C语言中单链表的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、思路步骤1. 定义结构体a.数据域:用来存放数据b.指针域:用
千家信息网最后更新 2026年11月02日C语言中单链表的示例分析
这篇文章将为大家详细讲解有关C语言中单链表的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
一、思路步骤
1. 定义结构体
a.数据域:用来存放数据
b.指针域:用来存放下一个数据的位置
2.初始化
申请头结点,并将其初始化为空
3.求当前数据元素的个数
a.设置一个指针变量p指向头结点和计数变量size等于0
b.循环判断p->next是否为空,如果不为空,就让指针p指向它的直接后继结点,并让size自增
c.返回size
4.插入
a.设置两个指针,一个指向头结点,另一个要动态申请内存空间存放要插入的数
b.找到要插入位置的前一位,并判断插入位置是否正确
c.生成新结点,给新结点数据域赋值,执行步骤①,在执行步骤②
5.删除
a.设置两个指针p、q,p指向头结点,q指向要被删除的结点
b.找到要删除位置的前一位,并判断删除位置是否正确、存在
c.q指向被删除的结点,将被删除结点的数据域赋值给x,p指向被删除结点的下一个结点,释放q的内存空间
6.释放内存空间
最后记得将头结点置空哦!要不然容易出现野指针。
二、代码
#include#include typedef int DataType;//给int起个别名,方便以后修改typedef struct Node{ DataType data;//数据域 struct Node *next;//指针域}SLNode;//初始化void ListInit(SLNode **head){ *head = (SLNode *)malloc(sizeof(SLNode));//申请头结点 (*head)->next = NULL;}//求当前数据元素个数int ListLength(SLNode *head){ SLNode *p = head; int size = 0; while (p->next != NULL) { p = p->next; size++; } return size;}//插入int ListInsert(SLNode *head, int i, DataType x){ SLNode *p, *q; int j; p = head; j = -1; while (p->next != NULL && j < i - 1) { p = p->next; j++; } if (j != i - 1) { printf("插入参数位置错误!!!\n"); return 0; } q = (SLNode *)malloc(sizeof(SLNode));//生成新结点 q->data = x; q->next = p->next; p->next = q; return 1;}//删除int ListDelete(SLNode *head, int i, DataType *x){ SLNode *p, *q; int j; p = head; j = -1; while (p->next != NULL && p->next->next != NULL && j < i - 1) { p = p->next; j++; } if (j != i - 1) { printf("删除位置参数错误!!!\n"); return 0; } q = p->next; *x = q->data; p->next = p->next->next; free(q);//释放被删除结点的内存空间 return 1;}//按位取int ListGet(SLNode *head, int i, DataType *x){ SLNode *p; int j; p = head; j = -1; while (p->next != NULL && j < i) { p = p->next; j++; } if (j != i) { printf("取出位置参数错误!!!\n"); return 0; } *x = p->data; return 1;}//释放void ListDestroy(SLNode **head){ SLNode *p, *q; p = *head; while (p != NULL) { q = p; p = p->next; free(q); } *head = NULL;}int main(){ SLNode *head; int i, x; ListInit(&head); for (i = 0; i < 10; i++) ListInsert(head, i, i + 10); ListDelete(head, 9, &x); for (i = 0; i < ListLength(head); i++) { ListGet(head, i, &x); printf("%d ", x); } ListDestroy(&head); system("pause"); return 0;}
关于"C语言中单链表的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
结点
位置
数据
指针
内存
指向
空间
a.
参数
步骤
篇文章
错误
b.
向头
示例
语言
分析
两个
个数
元素
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡
科技互联网企业
鸠鸠互联网科技
互联网 科技
以房互联网科技
多迪互联网科技有限公司
互联网科技大会案例
科技类的互联网平台
滨湖区互联网智能科技产品供应
天速互联网络科技有限公司
顶级互联网科技成果有哪些
来此购互联网科技有限公司
千方科技属于互联网企业吗
互联网金融科技元年
上海钢联属于互联网科技股吗
杭州披云加互联网科技有限公司
宁波跨境商互联网科技有限公司
广西科技产业互联网是什么
互联网时代高科技布局
三亚科技创新互联网基地
保险科技 互联网保险
互联网电商科技
互联网科技公司有哪些
汽车互联网创新科技园
梅州GM互联网络科技有限公司
领航科技大厦互联网公司
九思连强互联网电子科技有限公司
吉林省码上互联网科技电话
广州智享互联网科技
互联网科技的前景