系统粉 > 电脑问答 > 其他问答

已解决关于单链表,我的程序是哪里出错呢?

提问者:往事三行  |  浏览次  |  提问时间:2017-01-16  |  回答数量:5

关于单链表,我的程序是哪里出错呢? 我想了好几天都不知错误在哪,大家帮帮忙哈!题目是:两个递增单链表合成一个递减单链表(编程)设ha和hb分别是两个带附加头结点的递增(存在相同值)单链表的表头指针,试设计一个算法,将这两个有序链表合成一个递减单链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。表中允许有重复的数据。结果单链表的表头指针为ha。//带附加头结点的单链表的类//文件名:p060_List.h#include<iostream.h>//使用cout,cin,cerr#include<stdlib.h>//使用exit(1)template<class T>struct LinkNode{T data;LinkNode<T> *link;LinkNode(LinkNode<T> *ptr=NULL){ link=ptr; }LinkNode(const T &item,LinkNode<T> *ptr=NULL){ data=item; link=ptr; }};template<class T>

已有5条答案
岁月旳枯燥

岁月旳枯燥

回答数:101  |  被采纳数:132

调试一下,Merge中hc=ha;hc->link=NULL;会把ha->link设为0,也就是后面都无法访问整个ha链表
2017-01-16 16:11:56
赞 10
朱_晓君

朱_晓君

回答数:45  |  被采纳数:7

ha是附加头结点,就是希望令ha独立出来,令hc接替ha,然后再把正确递减顺序的结点接到ha下,这没错啊...嘿嘿版主说下我该作何修改喽?
2017-01-16 20:36:59
赞 4
浅然君

浅然君

回答数:84  |  被采纳数:148

template<class T>
void Merge(LinkNode<T>* ha,LinkNode<T>* hb){
LinkNode<T>*hc,*p;
LinkNode<T>*hah=ha;
LinkNode<T>*hbh=hb;
hc=0;
ha=ha->link;
hb=hb->link;
while(ha!=NULL && hb!=NULL){
if(ha->data<hb->data){
p=ha;
ha=ha->link;
p->link=hc;
hc=p;

}
else {
p=hb;
hb=hb->link;
p->link=hc;
hc=p;
}
}
while(ha!=NULL){
p=ha;
ha=ha->link;
p->link=hc;
hc=p;
}
while(hb!=NULL){
p=hb;
hb=hb->link;
p->link=hc;
hc=p;
}
hah->link=hc;
hbh->link=0;
}
2017-01-16 22:36:02
赞 8
盆果公司试玩员

盆果公司试玩员

回答数:8  |  被采纳数:11

泪奔了泪奔了,为版主实力而感动。。。
我再好好咀嚼下新编写的代码和我原先的区别所在,感谢!
2017-01-16 15:33:05
赞 0
书生不吃饭唉

书生不吃饭唉

回答数:98  |  被采纳数:73

我懂了。。。。错的如此不堪
2017-01-17 04:15:10
赞 9
相关问答
最新其他问答
解决方法