單鏈表逆序或者逆序輸出

2021-06-23 09:42:32 字數 1679 閱讀 9876

分為兩種情況,一種是只逆序輸出,實際上不逆序;另一種是把鍊錶逆序。

********************逆序輸出***********************

#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 ...

單鏈表逆序

第二個題目是很經典的 單鏈表逆序 問題。很多公司的面試題庫中都有這道題,有的公司明確題目要求不能使用額外的節點儲存空間,有的沒有明確說明,但是如果面試者使用了額外的節點儲存空間做中轉,會得到乙個比較低的分數。如何在不使用額外儲存節點的情況下使乙個單鏈表的所有節點逆序?我們先用迭代迴圈的思想來分析這個...