C语言怎么实现单链表的基本功能
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,本篇内容主要讲解"C语言怎么实现单链表的基本功能",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C语言怎么实现单链表的基本功能"吧!1.首先简单了解一下链表
千家信息网最后更新 2025年01月17日C语言怎么实现单链表的基本功能
本篇内容主要讲解"C语言怎么实现单链表的基本功能",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C语言怎么实现单链表的基本功能"吧!
1.首先简单了解一下链表的概念:
要注意的是链表是一个结构体实现的一种线性表,它只能从前往后,不可以从后往前(因为next只保存下一个节点的地址).在实现单链表的操作时,需要用指针来操作.很简单,注释写的很详细,欢迎大家指正哈哈哈哈~之前写的太烂了重新写了一下.....
2.代码展示:
#include#include #include typedef struct linklist { int data; struct linklist* next;}node;//目录//1.动态申请节点node* Creatnode(int x);//2.单链表的尾插void PushBack(node** plist, int x);//3.单链表的打印void Printlist(node** plist);//4.单链表尾删void Popback(node** plist);//5.单链表的头插void PushFront(node** plist, int x);//6.单链表的头删void PopFrount(node** plist);//7.单链表的查找node* Findpos(node* plist, int x);//8.单链表在pos位置之后插入xvoid Insertlinstafter(node* pos, int x);//9.单链表删除pos位置之后的元素void PopPosAfter(node* pos);//10.单链表的销毁void Destorylist(node** plist);//1.动态申请节点node* Creatnode(int x) { node* t = (node*)malloc(sizeof(node)); if (t == NULL) { assert(0); return NULL; } else { t->next = NULL; t->data = x; return t; }}//2.单链表的尾插void PushBack(node** plist, int x) { assert(plist); if (*plist == NULL) { *plist = Creatnode(x); } else { node* p = *plist; while (p->next) { p = p->next; } p->next = Creatnode(x); }}//3.单链表的打印void Printlist(node** plist) { assert(plist); node* p =* plist; while (p) { printf("%d ", p->data); p = p->next; }}//4.单链表尾删void Popback(node** plist) { assert(plist); if (*plist == NULL) { return NULL; } node* p = *plist; node* q = NULL; while (p->next) { q = p; p = p->next; } q->next =NULL; free(p);}//5.单链表的头插void PushFront(node** plist, int x) { assert(plist); node* t = Creatnode(x); if (NULL == *plist) { *plist = t; } else { t->next = *plist; *plist = t; }}//6.单链表的头删void PopFrount(node** plist) { assert(plist); if (plist == NULL) { return NULL; } else { node* p = *plist; *plist = p->next; free(p); }}//7.单链表的查找node* Findpos(node* plist, int x) { node* cur = plist; while (cur) { if (cur->data == x) { return cur; } cur = cur->next; } return NULL;}//8.单链表在pos位置之后插入xvoid Insertlinstafter(node* pos, int x) { assert(pos); if (NULL == pos) { return ; } node* t = Creatnode(x); t->next = pos->next; pos->next = t;}//9.单链表删除pos位置之后的元素void PopPosAfter(node* pos) { assert(pos); if (pos->next == NULL) { return; } else{ node* p = pos->next; pos->next = p->next; free(p); }}//10.单链表的销毁void Destorylist(node** plist) { assert(plist); node* p = *plist; while (p) { *plist = p->next; free(p); p = *plist; } *plist = NULL;} void test1() { node* plist=NULL;//创建头指针 PushBack(&plist, 1);//尾插元素 PushBack(&plist, 2); PushBack(&plist, 3); PushBack(&plist, 4); PushBack(&plist, 5); Printlist(&plist);//打印链表元素 1 2 3 4 5 printf("\n"); Popback(&plist); //尾删元素 PushFront(&plist, 0);//首插元素0 Printlist(&plist);//打印链表 0 1 2 3 4 printf("\n"); PopFrount(&plist);//首删元素0 Printlist(&plist);//打印链表 1 2 3 4 printf("\n"); Findpos(plist,1);//寻找链表中1的地址,不方便演示,下面会演示 Insertlinstafter(Findpos(plist, 4), 5);//在4后面插入5,用到上面的Findpos函数 Printlist(&plist);//打印链表 1 2 3 4 5 printf("\n"); PopPosAfter(Findpos(plist, 4));//删除指定位置后面的元素(删除4后面的5) Printlist(&plist);//打印链表 1 2 3 4 printf("\n"); Destorylist(&plist);//销毁链表 Printlist(&plist);//打印链表}void test() { test1();}int main() { test(); return 0;}
3.测试结果:
a.先创建了头指针plist
b.尾插1 2 3 4 5
c. 尾删元素5
d.首插元素0
e.首删元素0
f.在元素4 后面插入5
g.删除4元素后面的5
h.销毁链表
到此,相信大家对"C语言怎么实现单链表的基本功能"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
元素
位置
功能
语言
指针
节点
内容
动态
地址
学习
演示
实用
更深
代码
兴趣
函数
实用性
实际
操作简单
方法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
吐鲁番网络技术怎么样
常用网络安全技术轮询
携程旅游官网数据库
数据库按时间条件删除数据
日志服务器 管理
逍遥西游转移数据库
数据库复制到另一个数据库命令
安卓软件开发计算器的报告
1u服务器一般多高
软件开发百度华为哪个好
各代移动通信网络技术
怎样公网访问内网服务器
韶关市网络安全学院
青岛戴尔服务器代理销售电话
丰台区管理软件开发包括什么
温州服装进销存软件开发
怎么搭建物理服务器
企业管控软件开发公司设计方案
软件开发 sde 有哪些
网络安全工作表态发言简短
数据库开发可以转到人工智能吗
私人服务器安全狗
上海播呗网络技术有限公司
服务器画图工具指令
tick 服务器
工业互联网网络技术有限公司
郑州交友软件开发公司
网站关停后数据库能导出吗
数据库工程师应该具备的素质
温州银上网络技术有限公司