C語言鏈表逆序方法技巧

C語言有豐富的數據結構和運算符。包含了各種數據結構,如整型、數組類型、指針類型和聯合類型等,用來實現各種數據結構的運算。下面是小編爲大家搜索整理的C語言鏈表逆序方法技巧,希望大家能有所收穫,更多精彩內容請及時關注我們應屆畢業生考試網!

C語言鏈表逆序方法技巧

簡潔的做法是

遍歷鏈表,

元素進棧,

遍歷的同時銷燬原來的鏈表。

元素出棧,

建立新鏈表。

高效的是,

用指向鏈表結點指針的指針操作

直接首尾交換指針值(兩兩進行)

一般的是前插法

實際上根本就不用插入,一次遍歷就可以完成了。

鏈表的逆序,必將涉及到兩個以上指針,一般用三個指針,

下面是一個人的'程序:

struct List1 *reverse(List1 *h) //h爲鏈表的頭指針

{

struct List1 *p,*v1,*v2;

v2=h;

v1=NULL;

while( v2!=NULL ){

p=v2->pNext;

v2->pNext=v1;

v1=v2;

v2=p;

}

return v1;

}

另一個人的:

struct IntNode* res(struct IntNode* h)

{

struct IntNode *s, *s1;

s = h;

h = NULL;

while (s)

{

s1 = s;

s = s->next;

s1->next = h;

h = s1;

}

return h;

}

算法都是一致,但順序不一樣,這直接點明瞭鏈表操作的核心——順序,鏈表的算法主要難在順序上。

逆序操作中,要將一個指針指向前一個節點,中間必然斷開,這就需要兩個指針指向斷開處的一前一後

上面兩個程序都是這樣,不同在於指針移動的位置。