【C语言数据结构】单链表
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,LinkList.h#ifndef LINK_LIST_H#define LINK_LIST_H//链表节点typedef struct _LinkListNode{ struct _LinkL
千家信息网最后更新 2026年11月01日【C语言数据结构】单链表
LinkList.h
#ifndef LINK_LIST_H#define LINK_LIST_H//链表节点typedef struct _LinkListNode{ struct _LinkListNode *next;}LinkListNode;//单链表typedef void LinkList;/* * 创建单链表 * @return 返回单链表的指针 */LinkList* LinkList_Create();/* * 销毁单链表 * @param list 单链表的指针 */void LinkList_Destroy(LinkList *list);/* * 清空单链表 * @param list 单链表的指针 */void LinkList_Clear(LinkList *list);/* * 向单链表pos位置处插入元素 * @param list 单链表指针 * @param node 元素指针 * @param pos 插入的索引 */int LinkList_Insert(LinkList *list,LinkListNode *node,int pos);/* * 获取单链表中索引位置处的元素 * @param list 单链表指针 * @param pos 单链表索引值 * @param return 元素指针 */LinkListNode* LinkList_Get(LinkList *list,int pos);/* * 删除单链表中索引位置处的值 * @param list 单链表的指针 * @param pos 单链表索引 * @param return 非0表示删除成功 */int LinkList_Remove(LinkList *list,int pos);/* * 获取单链表当前已存储元素的个数 * @param list 单链表的指针 * @return 单链表中已存储元素的个数 */int LinkList_Length(LinkList *list);#endif // LINKLIST_HLinkLink.c
#include "Linklist.h"#include//单链表typedef struct _LinkList{ LinkListNode header;//链表头节点 int length;//链表长度}TLinkList;/* * 创建单链表 * @return 返回单链表的指针 */LinkList* LinkList_Create(){ TLinkList * list = (TLinkList *)malloc(sizeof(LinkList)); if(list != 0) { list->header.next = 0; //初始化头结点的后继指针为空 list->length = 0; } return list;}/* * 销毁单链表 * @param list 单链表的指针 */void LinkList_Destroy(LinkList *list){ free(list);}/* * 清空单链表 * @param list 单链表的指针 */void LinkList_Clear(LinkList *list){ if(list != 0) { TLinkList* l_list = (TLinkList *)list; l_list->header.next = 0; l_list->length = 0; }}/* * 向单链表pos位置处插入元素 * @param list 单链表指针 * @param node 元素指针 * @param pos 插入的索引 */int LinkList_Insert(LinkList *list,LinkListNode *node,int pos){ //类型转换 TLinkList* l_list = (TLinkList *)list; //判断链表指针和节点指针不能为空,当前插入的位置是否合法 int ret = ((list != 0) && (node != 0) && (pos >= 0) && (pos <= l_list->length)); if(ret) { LinkListNode* current = (LinkList *)l_list; int i; //移动到需要插入的位置的前驱 for(i = 0; i < pos;i++) { current = current->next; } node->next = current->next; //被插入节点的后继指针指向前驱节点的后继指针 current->next = node; //前驱节点的后继指针指向被插入节点 l_list->length++; } return ret;}/* * 获取单链表中索引位置处的元素 * @param list 单链表指针 * @param pos 单链表索引值 * @param return 元素指针 */LinkListNode* LinkList_Get(LinkList *list,int pos){ LinkListNode* node = 0; TLinkList * l_list = (TLinkList *)list; //判断链表指针不为空,且获取的索引合法 if( (l_list != 0) && (pos >= 0) && (pos < l_list->length) ) { LinkListNode* current = (LinkList *)l_list; int i; for(i = 0; i < pos; i++) { current = current->next; } node = current->next; } return node;}/* * 删除单链表中索引位置处的值 * @param list 单链表的指针 * @param pos 单链表索引 * @param return 非0表示删除成功 */int LinkList_Remove(LinkList *list,int pos){ TLinkList * l_list = (TLinkList *)list; int ret = ((l_list != 0) && (pos >= 0) && (pos < l_list->length)); if(ret) { LinkListNode* current = (LinkList *)l_list; int i; for(i = 0; i < pos; i++) { current = current->next; } //被删除元素的前驱元素的后继指针,指向被删除元素的后继指针 current->next = current->next->next; l_list->length--; } return ret;}/* * 获取单链表当前已存储元素的个数 * @param list 单链表的指针 * @return 单链表中已存储元素的个数 */int LinkList_Length(LinkList *list){ int ret = -1; if(list != 0) { TLinkList * l_list = (TLinkList *)list; ret = l_list->length; } return ret;}
测试代码
#include#include "Linklist.h"typedef struct _node{ LinkListNode node; int v;}Node;int main(void){ int i; Node n[5]; Node *node; for(i = 0;i < 5;i++) { n[i].v = i; } LinkList *list = LinkList_Create(); for(i = 0; i < 5;i++) { LinkList_Insert(list,(LinkListNode *)&(n[i]),0); } LinkList_Remove(list,2); for(i = 0; i < LinkList_Length(list);i++) { node = (Node *)LinkList_Get(list,i); printf("%d\n",node->v); } return 0;}
指针
元素
索引
位置
节点
后继
个数
前驱
存储
指向
合法
成功
代码
类型
结点
表头
长度
测试
移动
数据
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技
广东猪兼强互联网科技有限公司
互联网科技公司经营范围
疫情对互联网科技公司影响
互联网医疗科技
上海挚品互联网科技
互联网 的科技创新
互联网金融和金融科技
丰台科技园 互联网公司
科技与互联网的利与弊
央行互联网金融科技公司
现代互联网科技股
互联网公司科技股
佛山市翊博互联网络科技有限公司
中和天地互联网科技有限公司
中天科技中国工业互联网
东营紫格互联网科技
互联网科技接地气
保山互联网科技靠谱吗
求路客互联网科技电话
盈实互联网科技
港股互联网科技股
苏州五指互联网络科技有限
互联网第三次科技革命特征
皮皮虾互联网科技有限公司
互联网风格科技公司名称
北京天晋互联网科技有限公司
玉溪新华互联网科技怎么选
安徽零酒互联网科技有限公司
恒生科技指数 中概互联网