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