C语言中如何实现单向链表的增删查改操作
发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,这篇文章主要介绍了C语言中如何实现单向链表的增删查改操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言链表是线性表的链式存储结构,
千家信息网最后更新 2025年02月07日C语言中如何实现单向链表的增删查改操作
这篇文章主要介绍了C语言中如何实现单向链表的增删查改操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
前言
链表是线性表的链式存储结构,它可以以O(1)的时间复杂度进行插入或者删除,同时由于是链式结构相比顺序表而言,不会存在空间浪费的情况。而链表又分为带头单向链表,不带头单向链表,带头循环链表,不带头循环链表,带头双向循环链表,不带头双向循环链表,带头双向链表,不带头双向链表,总共有八种,其中结构最简单的是不带头单向链表,也是实现起来最容易出错的。并且我们在网上进行链表的oj时,题目基本也是不带头的单向链表,而且也是互联网大厂面试中最容易考的。
一、创建
typedef int SLTDadaType;//存放的数据类型struct SListNode{ SLTDadaType _data;//存放的数据 struct SListNode* _next;//指向下一个节点的指针};typedef struct SListNode SListNode;
二、单向链表的函数声明
SListNode* BuyListNode(SLTDadaType x);//创建一个节点SListNode* SListPushBack(SListNode* head, SLTDadaType x);//尾插SListNode* SListPopBack(SListNode* head);//头插SListNode* SListPushFornt(SListNode* head, SLTDadaType x);//尾删SListNode* SListPopFornt(SListNode* head);//头删SListNode* SListFind(SListNode* head, SLTDadaType x);//查找一个节点void SListModify(SListNode* head, SLTDadaType x,SLTDadaType y);//x修改
三、函数实现
1.创建节点
SListNode* BuyListNode(SLTDadaType x){ SListNode* newnode = (SListNode*)malloc(sizeof(SListNode)); newnode->_data = x; newnode->_next = NULL; return newnode;}
2.尾插节点
SListNode* SListPushBack(SListNode* head, SLTDadaType x){ SListNode* newnode = BuyListNode(x);//无论节点是否为空,都先进行创建一个节点 if (head == NULL) //头节点为空 { head = newnode; return head; } else //头节点不为空,直接遍历到链表结尾进行尾插 { SListNode* tail = head; while (tail->_next != NULL) { tail = tail->_next; } tail->_next = newnode; return head; }}
3.头插
SListNode* SListPushFornt(SListNode* head, SLTDadaType x){ SListNode* newnode = BuyListNode(x); newnode->_next = head; head = newnode; return head;}
4.尾删
SListNode* SListPopBack(SListNode* head){ //1.空 //2.只有一个节点 //3.有多个节点 if (head == NULL) { return head; } else if (head->_next== NULL) { free(head); head = NULL; return head; } else { SListNode* prev = NULL; SListNode* tail = head; while (tail->_next != NULL) //利用前指针来保存要删除的节点的前一个节点 { prev = tail; tail = tail->_next; } free(tail); if (prev != NULL) prev->_next = NULL; return head; }}
5.头删
SListNode* SListPopFornt(SListNode* head){ if (head == NULL) { return head; } else { SListNode* cur = head->_next; free(head); head = cur; return head; }}
6.查找节点
SListNode* SListFind(SListNode* head, SLTDadaType x){ SListNode* cur = head; while (cur) { if (cur->_data == x) { return cur; } else { cur = cur->_next; } } return NULL;}
7.修改
void SListModify(SListNode* head, SLTDadaType x, SLTDadaType y)//x修改{ SListNode* find = SListFind(head, x); if (find) { find->_data = y; } else { printf("对不起,您要修改的值不存在\n"); }}
感谢你能够认真阅读完这篇文章,希望小编分享的"C语言中如何实现单向链表的增删查改操作"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
节点
单向
双向
篇文章
环链
结构
语言
函数
同时
指针
数据
链式
复杂
互联网
价值
兴趣
前言
只有
复杂度
多个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
贵州板材套料软件开发商
茂名软件开发公司行业
服务器被防火墙屏蔽
德国科技工业互联网
奇泉网络技术有限公司
访问服务器出错了4001
防网络安全的内容
emc服务器保修只有一年
软件开发编程技术
夏令营网络安全课
黄浦区环保网络技术解决方案
怎么用from表单提交数据库
库存数据库的结构
宁夏服务器虚拟化解决方案
赣州市网络安全宣传周
数据库死亡率
赤峰学网络技术报名
网络安全法几年几月几日开始试
服务器机柜维修多长时间
数据库的物理模型的作用
房山回收二手服务器价格查询
稳健安全的sql分布式数据库
学软件开发的技术学校
潍坊网络安全会议
应收账款软件开发需求
长沙市网络安全活动
网络安全法律法规的解读
国泰安数据库有每股收益吗
数据库多线程如何用
数据库小组取名