假没有一个线性表L,采用单链表存储结构。设计一个算法,删除单链麦L(至少含两个数据结点)中第一个元素值最大的结点。(本题共12分)

1个回答
展开全部
摘要 问题
设计一个算法删除单链表L(有头结点)中的一个最小值结点。
解答
用p从头至尾扫描链表,pre指向*p结点的前驱,用minp保存值最小的结点指针,minpre指向minp的前驱。一边扫描,一边比较,将最小值结点放到minp中。
代码如下:
void delminnode(LNode *&L){
LNode *pre = L, *p = pre->next, *minp = p, *minpre = pre;
while(p != NULL) { //查找最小值结点minp以及前驱结点minpre
if(p->data minp->data){
minp = p;
minpre = pre;
}
pre = p;
p = p->next;
咨询记录 · 回答于2022-05-06
假没有一个线性表L,采用单链表存储结构。设计一个算法,删除单链麦L(至少含两个数据结点)中第一个元素值最大的结点。(本题共12分)
您好,请参考:
https://blog.csdn.net/cckevincyh/article/details/45750133
问题设计一个算法删除单链表L(有头结点)中的一个最小值结点。解答用p从头至尾扫描链表,pre指向*p结点的前驱,用minp保存值最小的结点指针,minpre指向minp的前驱。一边扫描,一边比较,将最小值结点放到minp中。代码如下:void delminnode(LNode *&L){ LNode *pre = L, *p = pre->next, *minp = p, *minpre = pre; while(p != NULL) { //查找最小值结点minp以及前驱结点minpre if(p->data minp->data){ minp = p; minpre = pre; } pre = p; p = p->next;
您可以参考这个,把最小值的位置换成最大值
void delminnode(LNode *&L){ LNode *pre = L, *p = pre->next, *maxp = p, *maxpre = pre; while(p != NULL) { //查找最大值结点maxp以及前驱结点maxpre if(p->data > maxp->data){ maxp = p; maxpre = pre; } pre = p; p = p->next; } maxpre->next = maxp->next; //删除*maxp结点。 free(maxp);}
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消