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

C語言鏈表逆序技巧

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

遍歷鏈表,

元素進棧,

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

元素出棧,

建立新鏈表。

高效的是,

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

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

深圳北大青鳥

評論
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
中文字幕永久在线中文免费 | 日本中文字幕一区二区 | 一本一道久久a久久精品 | 在线观看日韩亚理伦 | 亚洲中文字幕久爱亚洲伊人 | 自拍微拍福利精品在线资源 |