单链表--删除最大元素
发布日期:2021-11-02 05:00:17 浏览次数:2 分类:技术文章

本文共 1142 字,大约阅读时间需要 3 分钟。

设计一个算法,删除一个单链表L中元素值最大的节点(假设最大值节点是唯一的)

#include
#include
typedef struct LNode{ int data; struct LNode *next;}LinkNode; //单链表节点类型void CreatList(LinkNode *&L,int a[],int n);void Display(LinkNode *L);void delmaxnode(LinkNode *&L);int main(){ int a[] = {1,5,9,3,2,4}; LinkNode *L; CreatList(L,a,6); delmaxnode(L); Display(L);} void CreatList(LinkNode *&L,int a[],int n){ LinkNode *s,*r; //声明两个指针 L = (LinkNode *)malloc(sizeof(LinkNode)); //创建一个头结点 r = L; // r 始终指向尾节点,初始时指向头结点 for( int i = 0; i < n; i++) { s = (LinkNode *) malloc(sizeof(LinkNode)); s->data = a[i]; r->next = s; r = s; } r->next = NULL; } void Display(LinkNode *L){ LinkNode *p = L->next; //p指向第一个结点(不一定是头结点) while( p!= NULL) { printf("%d ",p->data); p = p->next; } printf("\n");}void delmaxnode(LinkNode *&L){ LinkNode *p=L->next,*pre=L,*maxp=p,*maxpre=pre; while (p!=NULL) { if (maxp->data
data) //若找到一个更大的节点 { maxp=p; //更改maxp maxpre=pre; //更改maxpre } pre=p; //p、pre同步后移一个节点 p=p->next; } maxpre->next=maxp->next; //删除*maxp节点 free(maxp); //释放*maxp节点}

总结:找到最大元素,必须记录当前节点和前一个节点,,单链表想删除一个节点必须知道前一个节点。

转载地址:https://blog.csdn.net/weixin_43486985/article/details/97618903 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:单链表--排序
下一篇:顺序表--以第一个元素为分界线(基准), 将所有小于等于它的元素移到该元素的前面,将所有大于它的元素移到该元素的后面

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月04日 22时23分40秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

【计算机操作系统】进程管理详解?进程与线程区别是什么?进程调度的算法有哪些?进程通信有哪些? 2019-04-26
【计算机操作系统】虚拟内存是什么?分页系统地址映射?页面置换算法有哪些?分段地址映射又是什么? 2019-04-26
【计算机操作系统】设备管理?磁盘结构是怎么样的?磁盘调度算法有哪些? 2019-04-26
【多线程高并发】为什么要使用多线程?创建多少个线程合适呢? 2019-04-26
【多线程与高并发】 Java两个线程轮流打印1-100两个数?多线程轮流打印数字? 2019-04-26
【多线程与高并发】 Java两个线程轮流打印字符串? 2019-04-26
【Linux命令篇】Linux命令实践 2019-04-26
【Leetcode单调队列】Leetcode239 滑动窗口最大值 2019-04-26
【Leetcode-单调栈】单调栈相关的题目-下一个更大的元素I 每日温度 2019-04-26
【Leetcode单调队列】- 洛谷P1714切蛋糕 2019-04-26
【Leetcode优先级队列】- 数据流的中位数 2019-04-26
【Leetcode优先级队列】-合并K个升序链表 2019-04-26
【多线程与高并发】-Java如何实现一个阻塞队列呢? 2019-04-26
【多线程高并发】-Java使用阻塞队列ArrayBlockingQueue实现生产者消费者模式? 2019-04-26
【多线程高并发】-多线程实现数组的读与写 2019-04-26
【Java设计者模式】-Java实现订阅-发布者模式 2019-04-26
【计算机操作系统】-什么是系统调用呢?什么是用户态?什么是内核态? 2019-04-26
【计算机操作系统-进程管理】-进程通信是什么呢? 2019-04-26
Python程序元素分析 2019-04-26
TurtleArt美景图 2019-04-26