- 相關(guān)推薦
C語言鏈表逆序方法技巧
C語言有豐富的數(shù)據(jù)結(jié)構(gòu)和運算符。包含了各種數(shù)據(jù)結(jié)構(gòu),如整型、數(shù)組類型、指針類型和聯(lián)合類型等,用來實現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)的運算。下面是小編為大家搜索整理的C語言鏈表逆序方法技巧,希望大家能有所收獲,更多精彩內(nèi)容請及時關(guān)注我們應屆畢業(yè)生考試網(wǎng)!
簡潔的做法是
遍歷鏈表,
元素進棧,
遍歷的同時銷毀原來的鏈表。
元素出棧,
建立新鏈表。
高效的是,
用指向鏈表結(jié)點指針的指針操作
直接首尾交換指針值(兩兩進行)
一般的是前插法
實際上根本就不用插入,一次遍歷就可以完成了。
鏈表的逆序,必將涉及到兩個以上指針,一般用三個指針,
下面是一個人的程序:
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;
}
算法都是一致,但順序不一樣,這直接點明了鏈表操作的核心——順序,鏈表的算法主要難在順序上。
逆序操作中,要將一個指針指向前一個節(jié)點,中間必然斷開,這就需要兩個指針指向斷開處的一前一后。
上面兩個程序都是這樣,不同在于指針移動的位置。
【C語言鏈表逆序方法技巧】相關(guān)文章:
C語言的循環(huán)鏈表和約瑟夫環(huán)09-29
C語言頭文件避免重復包含的方法技巧08-28
C語言左右法則的技巧10-03
C語言的reduce方法應用10-22
C語言的冒泡排序方法08-22
Java程序調(diào)用C/C++語言函數(shù)的方法07-31
C語言返回多個值的方法07-07
C#數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表的實例代碼10-22
C語言入門的基本學習方法09-29