数据结构之头指针链表的逆序、输出和指定位置的删除
来源:互联网 发布:小说在线阅读网站 知乎 编辑:程序博客网 时间:2024/05/24 20:07
头指针链表指定位置的删除
实现:1,先判断传入的数据是否正确,然后再判断是否为空表,最后判断pos的值是否满足题意 2,分删除位置为1和不为1讨论:为1时,直接将h指向第二个节点并释放第一个节点的空间(定义一个tmp指向第一个节点);不为1时,找到插入位置的前一个节点(利用tmp遍历),其中需要考虑pos的值是否会造成越界 3,最后删除pos处的节点,注意释放空间防止内存泄漏。
// 删除pos处的节点int Delete_Pos(Node** h, int pos){ // 判断传入数据是否正确、是否为空表、pos是否合题意 if (NULL == h || NULL == *h || pos < 1) { return FALSE; } Node* tmp = *h; // 用于保存指针 // 如果删除的第一个 if (1 == pos) { *h = tmp->next; // h指向第二个节点 free(tmp); // 释放空间 } else { int i; for (i = 0; i < pos - 2; i++) // tmp遍历到pos前一个节点 { // 如果tmp->next不为空,那tmp也不为空 if (NULL == tmp->next) { break; } tmp = tmp->next; } if (NULL == tmp->next) // 如果tmp->next为空则结束 { printf ("删除位置越界\n"); return FALSE; } Node* p = tmp->next; // p用来保存删除位置的指针,释放空间用 tmp->next = p->next; // 将pos处节点一处链表 free(p); // 释放删除节点的空间 } return TRUE;}
头指针链表的逆序
实现:先判断传入数据的正确性,然后判断是否是空表,最后判断是否只有一个节点——从前往后,3个为一组,将前两个指向调换,以此为循环向后遍历直到结束,结束标志为一组中第二个为NULL——最后一步,将逆序后的最后一个指向NULL,头指针 h 指向逆序后的第一个。
// 逆序int Reverse_List(Node** h){ // *h==NULL代表空表 (*h)->next代表只有一个节点 if (NULL == h || NULL == *h ||NULL == (*h)->next) { return FALSE; } // 定义3个指针来实现逆序 Node* pre = *h; Node* cur = (*h)->next; Node* tmp; while (cur) // 从前往后依次逆序 { tmp = cur->next; cur->next = pre; pre = cur; cur = tmp; } // 头尾的处理 (*h)->next = NULL; // 将第一个节点指向NULL *h = pre; // 头指针 h 指向最后一个节点 return TRUE;}
头指针链表的输出
//输出函数void Display(Node* h){ if (NULL == h) //判断传入数据是否正确 { return; } int count = 0; //计数初始化 while (h) { printf (++count % 4 ? "%8d" : "%8d\n", h->data); h = h->next; } putchar ('\n');}
阅读全文
0 0
- 数据结构之头指针链表的逆序、输出和指定位置的删除
- 数据结构之链表(头指针链表的插入、删除、逆序)
- 数据结构(三) Java实现静态链表的顺序新增、指定位置新增和删除
- 实现链表的逆序输出和删除某节点
- C++类中单链表的实现(头插、尾插、头删、尾删、指定位置插入、指定位置删除、链表长度、清空链表、链表排序)
- 链表输出指定位置的值
- 链表的指定位置输出
- 单链表之在不知道头指针的情况下删除指定结点
- 数据结构(一)-顺序存储结构的插入和删除:向指定位置的数组插入和删除元素
- C数据结构链表的插入,删除,逆序…
- 【C语言】静态顺序表的实现(包括头插、头删、尾插、尾删、查找、删除指定位置)
- 数据结构中静态顺序表的初始化、尾插、尾删、头插、头删、任意位置的插入及删除
- 输出指定位置的数字
- 链表的插入、删除、逆序打印、输出倒数第N个、链表逆序
- 只有头指针的单链表逆序
- 使用函数和指针实现数组的逆序输出
- 单向链表(二) 删除指定位置的节点
- 链表的逆序输出
- Codeforces Round #425 (Div. 2)D. Misha, Grisha and Underground
- linux python3使用opencv3.2
- JNI-Java访问C库
- 分布式发布订阅消息系统 Kafka 架构设计
- Django框架的学习
- 数据结构之头指针链表的逆序、输出和指定位置的删除
- 滴滴出行秋招笔试(0的个数)
- WebGL之旅(十)正射投影
- day12之判断一棵二叉树是否是平衡二叉树+求一颗二叉树的镜像+判断一个数在二维数组中是否存在
- 相对定位和绝对定位
- 第12届飞思卡尔电磁双车追逐组西部赛区参赛经验总结
- Codeforces Round #425 (Div. 2)B. Petya and Exam
- 元素隐藏的三种方式
- react native踩坑记之react-native-video 安卓平台下自动播放bug