c语言单链表,有几句程序不明白意思,能否教一下! 程序功能:带头结点的单链表中寻找最小值结点.
答案:2 悬赏:60
解决时间 2021-02-21 23:14
- 提问者网友:你在我心中是最美
- 2021-02-21 01:02
创建单链表过程和输出单链表过程省略.
HeadLink *delinsert(HeadLink *h){ /*h为一个已经创建好的单链表指针首地址
HeadLink *p,*pre,*q;
p=h->next; /*p指向头结点下一结点
pre=h; /*pre指向头结点
q=p; /*q指向p结点
while(p->next){ /*遍历的整个单链表
if(p->next->infoinfo){ /*如果p下一个结点的数据小于当前所指向的p结点
pre=p; /*这段程序是什么意思?
q=p->next; /*q指向了比较结束数据小的那个结点
}
p=p->next; /*p指向了下一结点
}
if(q!=h->next){ /*如果最小值是第一个元素结点,则不需要在操作
pre->next=q->next; /*这句程序什么意思?
q->next=h->next; /*最小结点插入到最前面
h->next=q; /*头结点指向最小结点
}
return h;
}
因为本人是自学的c语言所以如果上面某些段落如果翻译的不对也请告诉一下,十分感谢
最佳答案
- 二级知识专家网友:我们只是兮以城空
- 2021-02-21 01:08
pre实际上是用来保存那个最小节点q的前一个节点,当上面那个while语句做完了后q必定为最小节点,pre恰为q的前驱,pre->next=q->next这句实际上就是在改变q的前驱节点的指向,让q的前驱
pre指向它的下一个节点(因为要将最小节点q放到表头去,为保持链表的完整性,所以先将它的前驱pre移向最小节点q的下一节点)。
全部回答
- 1楼网友:有钳、任性
- 2021-02-21 01:34
这个算法我已经画了个图确定了是对的,倒置2个节点,循环要执行2次,以此类推时间复杂度是o(n),你不理解也可以画个图,一步一步推,这里很难讲明白,至于其他人的答案,我不敢恭维
我要举报
大家都在看
推荐资讯