分為兩種情況,一種是只逆序輸出,實際上不逆序;另一種是把鍊錶逆序。
********************逆序輸出***********************
#include#include#includeusing namespace std;
typedef struct nodenode;
//尾部新增
node * add(int n, node * head)
else if (head->next == null)
else
p->next = t;
}return head;
}//順序輸出
void print(node * head)
cout << endl;
}//遞迴
void reverseprint(node * p)
}//棧
void reverseprint2(node * head)
while (!s.empty())
}int main()
print(head);
reverseprint(head);
reverseprint2(head);
system("pause");
return 0;
}
逆序輸出可以用三種方法: 遞迴,棧,逆序後輸出。最後一種接下來講到。
*********************單鏈表逆序********************
#include#include#includeusing namespace std;
typedef struct nodenode;
node * add(int n, node * head)
else if (head->next == null)
else
p->next = t;
}return head;
}//迴圈
node * reverse(node * head)
node * p1 = head;
node * p2 = head->next;
node * p3 = null;
head->next = null;
while (p2 != null)
head = p1;
return head;
}void print(node * head)
cout << endl;
}//遞迴
node * reverse2(node * p)
node * newhead = reverse2(p->next);
p->next->next = p;
p->next = null;
return newhead;
}int main()
print(head);
head = reverse(head);
print(head);
head = reverse2(head);
print(head);
system("pause");
return 0;
}
這裡鍊錶逆序用了兩種方法:迴圈,遞迴。理解的方法是在紙上自己畫一下。
如何逆序輸出單鏈表?
怎樣才能逆序輸出單鏈表呢?剛剛有人考了我一道題,逆序輸出單鏈表 我是這樣答的 下面的 為偽 不能通過編譯 void printslist slist plist printf s str.c str 後來他讓我想一想還有沒有更為簡單的方法了,當時允許我上網,我用了幾分鐘到網上找了一下,沒有找到更好的...
單鏈表逆序
include include typedef struct student student typedef struct list list,list list createlist void paixu list l 比較笨拙的一種方法 list reverse list l int main ...
單鏈表逆序
第二個題目是很經典的 單鏈表逆序 問題。很多公司的面試題庫中都有這道題,有的公司明確題目要求不能使用額外的節點儲存空間,有的沒有明確說明,但是如果面試者使用了額外的節點儲存空間做中轉,會得到乙個比較低的分數。如何在不使用額外儲存節點的情況下使乙個單鏈表的所有節點逆序?我們先用迭代迴圈的思想來分析這個...