單鏈表例題

2021-10-02 11:31:41 字數 1274 閱讀 8723

普通方法: 遍歷一遍單鏈表以確定單鏈表的長度l,然後再次從頭節點出發迴圈l/2次即可找到單鏈表的中間節點。演算法複雜度為o(l+l/2)=o(3l/2).

高階方法: 利用快慢指標原理:設定兩個指標search、mid都指向單鏈表的頭節點。其中search的移動速度是mid的2倍。這樣當*search指向末尾節點的時候,*mid正好就在中間。這也是標尺的思想。演算法複雜度為o(l/2)。

status getmidnode

(linklist l, elemtype *e)

else

}*e=mid->data;

return ok;

}

#include

#include

#include

#include

#include

struct node ;

typedef

struct node node;

//重定義struct node型別為node

intgetmidnode

(node* l)

;void

list

(node* head)

; node*

creat

(int count)

;int

length

(node *l)

;int

main()

}return0;

}int n;

node*

creat

(int count)

else

p2 = p1;

p1 =

(node*

)malloc

(sizeof

(node));

// scanf("%d",&p1->data);

p1->data =

rand()

%1000;}

p2->next =

null

;return

(head);}

void

list

(node* head)

}int

getmidnode

(node* l)

else

} a = mid->data;

return a;

}int

length

(node *l)

n++;return n;

}

單鏈表(合併單鏈表)

單鏈表遍歷 單鏈表遍歷是從單鏈表頭指標head開始訪問,沿著next指標所指示的方向依次訪問每乙個結點,且每個結點只能訪問依次,直到最後乙個結點為止。遍歷時注意,不要改變head指標的指向。因此一般設定另外的乙個指標變數如p,p從head開始依次訪問乙個結點,直到鍊錶結束,此時p null,完成依次...

單鏈表之排序單鏈表

package list public class sortedsinglylist extends singlylist 將values陣列中的所有物件按值大小插入 public sortedsinglylist t values 過載深拷貝,由單鏈表構建排序單鏈表 public sortedsi...

單鏈表 雙鏈表

實現乙個單鏈表,鍊錶初始為空,支援三種操作 1 向煉表頭插入乙個數 2 刪除第k個插入的數後面的數 3 在第k個插入的數後插入乙個數 現在要對該鍊錶進行m次操作,進行完所有操作後,從頭到尾輸出整個鍊錶。注意 題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按照插入的...