係統粉 > 電腦問答 > 其他問答

已解決關於單鏈表,我的程序是哪裏出錯呢?

提問者:往事三行  |  瀏覽次  |  提問時間: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
相關問答
最新其他問答
解決方法