我的位置: 首頁 > 學(xué)習(xí)專區(qū) > .NET技術(shù) > C語言鏈表逆序技巧

C語言鏈表逆序技巧

2013-05-30 08:25:36
來源:
[導(dǎo)讀] 簡潔的做法是遍歷鏈表,元素進(jìn)棧,遍歷的同時銷毀原來的鏈表。元素出棧,建立新鏈表。高效的是,用指向鏈表結(jié)點指針的指針操作直接首尾交換
簡潔的做法是

遍歷鏈表,

元素進(jìn)棧,

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

元素出棧,

建立新鏈表。

高效的是,

用指向鏈表結(jié)點指針的指針操作

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

一般的是前插法

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

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

下面是一個人的程序:

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é)點,中間必然斷開,這就需要兩個指針指向斷開處的一前一后。

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

深圳北大青鳥

評論
熱點專題
>>
相關(guān)文章推薦
>>
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
欧美v日韩v国产 | 思思热免费精品在线看看 | 中文字幕一级理论片 | 综合亚洲国产一区二区三区 | 色妞在线视频网址免费观看国产片 | 亚洲综合国产一区二区三区 |