Lecture 7 鍊錶

2021-10-03 03:22:36 字數 2800 閱讀 2255

博主不定期更新【保研/推免、c/c++、5g移動通訊、linux、生活隨筆】系列文章,喜歡的朋友【點讚+關注】支援一下吧!

2. 鍊錶

#ifndef _array_h_

#define _array_h_

typedef

struct

array;

array array_create

(int init_size)

;void

array_free

(array *a)

;int

array_size

(const array *a)

;int

*array_at

(array *a,

int index)

;void

array_inflate

(array *a,

int more_size)

;#endif

the inte***ce

array array_create

(int init_size)

void

array_free

(array *a)

//封裝

intarray_size

(const array *a)

int*

array_at

(array *a,

int index)

return

&(a->array[index]);

}

void

array_inflate

(array *a,

int more_size)

//此迴圈可替換為標準庫函式:memcpy,提高效率

free

(a->array)

; a->array = p;

a->size +

= more_size;

}

#include

"array.h"

#include

#include

const block_size =20;

intmain()

array_free

(&a)

;return0;

}

#ifndef _node_h_

#define _node_h_

typedef

struct _node node;

#endif

例項:讀入一些數(不知道有多少個)並記錄下來,讀到-1為止。

#include

"node.h"

#include

#include

typedef

struct _list list;

void

add(list* plist,

int number)

;void

print

(list *plist)

;int

main()

}while

(number !=-1

);print

(&list)

;//遍歷輸出

/*****鍊錶的搜尋*****/

scanf

("%d"

,&number)

; node *p;

int isfound =0;

for( p=list.head; p; p=p->next)}if

(!isfound )

return0;

}void

add(list* plist,

int number)

//將表鏈結起來

last->next = p;

}else

}void

print

(list *plist)

printf

("\n");

}

鍊錶的遍歷:

void

print

(list *plist)

printf

("\n");

}

鍊錶的搜尋:

scanf

("%d"

,&number)

;node *p;

int isfound =0;

for( p=list.head; p; p=p->next)}if

(!isfound )

node *q;

for( q=

null

, p=list.head; p; q=p, p=p->next)

else

free

(p);

break;}

}

使用指標時如何尋找邊界條件?

當指標出現在->next左邊時,需要判斷該指標是不是null,以保證安全

for

( p=head; p; p=q)

7 回文鍊錶

使用快慢指標,當快指標到達表尾的時候,慢指標在鍊錶中部,將鍊錶的後半部分進行倒置,與前半部分進行比較,相等則為回文鍊錶。鍊錶的倒置部分 例如1 2 3 4 3 2 1 相當於是pre 前節點 slow 當前節點 next 下個節點 三個指標在鍊錶上滑動,開始的時候,slow指向4這個節點,pre 開...

中級演算法 7 奇偶鍊錶

題目 給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 1 輸入 1 2 3 4 5 nu...

鍊錶 環形鍊錶

環形鍊錶也叫迴圈鍊錶 可以是雙鏈表 也可以是單鏈表 操作原理和單鏈表差不多,只是最後乙個節點不在指向空 null 而是頭 head 這裡以單鏈表舉例 description 環形鍊錶 author lzq date 2018 11 3 20 46 version 1.0 public class a...