關於單鏈表的逆序

2021-09-25 05:30:54 字數 1222 閱讀 5899

昨天的課後習題出現了乙個單鏈表的逆序問題,作為乙個志在成為程式媛的我,寫了我人生中的第一篇部落格。。。

題目要求是:逆轉鍊錶,並返回逆轉後的頭結點。

我們先考慮一下對於鍊錶逆序時可能會出現的情況:

① 對於乙個空鍊錶:很明顯沒有資料,沒有內容,不需要逆序,之前return;

② 對於只有乙個節點的鍊錶我們也是不需要考慮,因為翻來覆去還是它自己,直接return;

所以我們需要做的就是節點個數超過了2個的情況。

先貼上一下簡陋的**。

//定義結構體

typedef struct _node

node;

//逆序

node* res(node **head)

//進行排序

while(p2)

(*head)->next = null;

(*head) = p1;

return (*head);

}

**太菜,希望不要嫌棄,下面說說怎麼實現的逆序功能。

我們從最簡單的情況來分析,當鍊表具有四個節點。

第一步 從1 →2→ 3→4  的順序變成2 →1   3→ 4。

我們第一次交換的是1和2 ,因為是單鏈表,只有乙個指向關係,所以為了丟失後面的節點資料,使用乙個指標p3來記住後面的節點關係。(注意的是 第一次交換完以後,2號和3號節點之間的指向關係已經斷開,p3指標記錄3號的資訊)

當交換完成以後,我們就需要更換p1,p2指標的位置來進行下一次的交換。

依次往後進行交換。

當我們全部交換結束以後,還要做乙個操作,就是將之前的頭指標的指向指向空,將現在的p1賦給head(注意操作順序)。

最終就完成了單鏈表的逆序。

關於單鏈表

單鏈表結構體 typedef struct student node 建立單鏈表 node create else p head while cycle else head head next p next null printf n yyy d head data return head 單鏈表測...

關於單鏈表逆置

逆置單鏈表演算法 整個過程就是圍繞這改變節點的指標域這一問題展開。具體實現 1.兩個節點指標 分別指向相鄰的兩個節點 2.儲存推進指標域的值 3.改變指標域 4.推進 如此迴圈 直到乙個節點指標指向null 另乙個節點指標指向尾節點。linklist reserver linklist head 條...

單鏈表逆序

include include typedef struct student student typedef struct list list,list list createlist void paixu list l 比較笨拙的一種方法 list reverse list l int main ...