想象扯著一條鐵鏈,想要加一環,肯定要先把下面一段的拆下來接到新環上,再把新環接到上面一段,如果先把新環接到上面一段,那下面那段就掉地上丟了。
2018-01-16
1. 單鏈表: 由頭結點開始依次指向尾節點, 尾節點指向NULL
2. 循環鏈表: 尾節點的指針域指向頭節點
3. 雙向鏈表: 節點有正向和反向兩個指針域
4. 靜態鏈表: 數組起始為頭節點, 指針域為數組下標, 尾節點的指針域為0
2. 循環鏈表: 尾節點的指針域指向頭節點
3. 雙向鏈表: 節點有正向和反向兩個指針域
4. 靜態鏈表: 數組起始為頭節點, 指針域為數組下標, 尾節點的指針域為0
2018-01-16
最贊回答 / kkkimmm
ListInsert這個方法中if(i<0||i>=m_iLength) { return false;} 這個判斷錯了。一開始m_iLength=0; 你執行 list->ListInsert(0,&e1);時,傳入i=0 就return false;了,當然也就沒法正確插入元素。要理解m_iLength這個變量其實總是指向于數組最后一個元素的下一個元素。插入時是允許插入在該位置上的。刪除時才不能刪除該位置的元素。應該改成if(i<0 || i > m_iLengt...
2018-01-10
最新回答 / 慕斯5158549
找到問題了,list.cpp中多了幾個“;”,bool List::ListInsertHead(Node *pNode)中有兩句代碼的順序反了。
2018-01-04
拙見:
void listperson(list *plist){
node nod;
int i=0;
cout<<"輸出刪除序列"<<endl;
cin>>i;
cout<<"顯示刪除信息"<<endl;
plist->getelem(i,&nod);
cout<<nod.data<<endl;
cout<<"確定 刪除"<<endl;
plist->listdelete(i,&nod);
void listperson(list *plist){
node nod;
int i=0;
cout<<"輸出刪除序列"<<endl;
cin>>i;
cout<<"顯示刪除信息"<<endl;
plist->getelem(i,&nod);
cout<<nod.data<<endl;
cout<<"確定 刪除"<<endl;
plist->listdelete(i,&nod);
2018-01-04