單鏈表 逆置單鏈表(頭插法且雙指標)

2021-10-12 07:50:03 字數 756 閱讀 4500

題意:

採用帶頭結點的單鏈表,設計乙個演算法將其就地逆置,所謂「就地」是指輔助空間o(1)。

這裡可以有兩種方法做:

1.頭插法且雙指標

2.改變指標指向且三指標

兩方法共同點:

頭結點還是作為頭結點。第乙個結點作為尾節點。

單鏈表的儲存結構:

typedef

struct linklist

分析:

這裡先解釋第一種方法:頭插法且雙指標

先將l看成乙個空表,讓頭結點置為空。然後後面的鍊錶元素,利用頭插法,乙個乙個插入頭結點後面。

思路:

1.定義兩個指標p = l->next; q = p->next; q儲存p後續節點

2.讓頭結點為null ,後面插入元素, 將第乙個結點作為尾節點

3.通過迴圈while插入,條件為p != null

q = p->next;

p->next = l->next; //這裡開始是為空,有元素之後就不是了

l->next = p;

p = q;

c**實現:

void

reverse1

(linklist * l)

}

單鏈表頭插法

include includetypedef struct node snode snode creat 建立頭結點 for i 1 idata x s next head head s return head int lenth snode l 求鍊錶的長度 return len snode ge...

單鏈表 頭插法

include include list.h int main node head null register int i 0 int n sizeof a sizeof a 0 for ireturn 0 include list.h include include node list creat...

單鏈表頭插法尾插法

標頭檔案如下 ifndef linklist h define linklist h define success 10000 define failure 10001 define size 10 typedef int element struct node typedef struct nod...