c语言实现单链表的及各项基本功能
来源:互联网 发布:宁波知豆电动汽车公司 编辑:程序博客网 时间:2024/05/16 11:42
单链表的各项基本功能都在以下的函数中实现
//录入数据ListNode* BuyNode(DataType x){ListNode* node = (ListNode*)malloc(sizeof(ListNode));node->data = x;node->next = NULL;return node;}//打印void PrintList(ListNode* pList){ListNode* cur = pList;while (cur){printf("%d->", cur->data);cur = cur->next;}printf("NULL");}//尾插void PushBack(ListNode** ppList, DataType x){//1,空//2,非空if (*ppList == NULL){*ppList = BuyNode(x);}else{ListNode* tail = *ppList;while (tail->next){tail = tail->next;}tail->next = BuyNode(x);}}//尾删void PopBack(ListNode** ppList){//1,空//2,一个//3,多个if ((*ppList) == NULL)//空{return;}else if ((*ppList)->next == NULL)//一个{free(*ppList);*ppList = NULL;}else//多个{ListNode* prev = NULL;ListNode* tail = *ppList;while (tail->next){prev = tail;tail = tail->next;}free(tail);tail = NULL;prev->next = NULL;//让上一个结点的next置空}}//头插void PushFront(ListNode** ppList, DataType x){//1,空//2,非空if ((*ppList) == NULL){*ppList = BuyNode(x);}else{ListNode* tmp = *ppList;*ppList = BuyNode(x);(*ppList)->next = tmp;}}//头删void PopFront(ListNode** ppList){//1,空//2,一个//3,多个if ((*ppList) == NULL){return;}else if ((*ppList)->next == NULL){free(*ppList);*ppList = NULL;}else{ListNode* tmp = *ppList;*ppList = tmp->next;free(tmp);}}//查找ListNode* Find(ListNode* pList, DataType x){ListNode* cur = pList;while (cur){if (cur->data == x){return cur;}cur = cur->next;}return NULL;}// 在pos的前面插入一个节点xvoid Insert(ListNode** ppList, ListNode* pos, DataType x){assert(ppList);assert(pos);//1,头插//2,中间插入if ((*ppList)->next == NULL){PushFront(ppList,x);}else{ListNode* prev = *ppList;while (prev->next != pos){prev = prev->next;}ListNode* tmp = BuyNode(x);prev->next = tmp;tmp->next = pos;}}//删除void Erase(ListNode** ppList, ListNode* pos){//1,头//2,尾//3,中间assert(pos);if (*ppList == pos){PopFront(ppList);}else if (pos->next == NULL){PopBack(ppList);}else{ListNode* prev = *ppList;while (prev->next != pos){prev = prev->next;}prev->next = pos->next;free(pos);}}
阅读全文
0 0
- c语言实现单链表的及各项基本功能
- 线性表基本功能的c语言实现
- 栈的基本功能实现(C语言)
- 数据结构C语言版--单链表的基本功能实现
- 【C语言】实现Linux下的cp命令的基本功能
- 【C语言】实现Linux下的last命令的基本功能
- c语言单向链表的基本功能的实现
- 数据结构C 语言描述——实现栈的基本功能
- 小游戏:扫雷 (C语言实现扫雷的基本功能)
- C实现数组的基本功能
- C语言链表的各项操作
- C语言队列的各项操作
- c语言串的各项操作
- SocketRocket的导入及基本功能实现
- 我自己编的一个c语言小程序:银行基本功能的实现
- 二叉树的基本功能实现(c++)
- C语言----链表的各项操作-----双向链表
- C++实现单链表的几个基本功能
- 任意竞赛图都有哈密顿path(A Tournament has a Hamiltonian path)
- WPF使用MediaElement显示gif图片
- context:annotation-config 错误解决办法
- 一分钟了解“Matlab绘图三维数据”
- intellij idea引入依赖包
- c语言实现单链表的及各项基本功能
- Java 8 Optional类深度解析
- ubuntu修改DNS重启有效
- 自问自答3——深度学习中如何避免梯度消失(待回答)
- 仿京东下拉刷新动画
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.7输入输出流(4.7.4-4.7.6)
- Jquery源码解析(jQuery的遍历结构设计)
- 版本控制工具git详细说明
- HoloLens开发笔记-资料整理-Input-Gesture