題意:
採用帶頭結點的單鏈表,設計乙個演算法將其就地逆置,所謂「就地」是指輔助空間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...