資料結構(上) 線性表 鍊錶 堆疊 佇列

2022-02-23 16:25:11 字數 2843 閱讀 9110

mooc浙江大學陳越、何欽銘 老師的課程刷課筆記

一、線性表的c語言實現

typedef int

position;

typedef

struct lnode *list;

struct

lnode ;

/*初始化

*/list makeempty()

/*查詢

*/#define error -1position find( list l, elementtype x )

/*插入

*//*

*/bool

insert( list l, elementtype x, position p )

if ( p<0 || p>l->last+1 )

for( i=l->last; i>=p; i--)

l->data[i+1] = l->data[i]; /*

將位置p及以後的元素順序向後移動

*/l->data[p] = x; /*

新元素插入

*/l->last++; /*

last仍指向最後元素

*/return

true;}

/*刪除

*//*

*/bool

delete( list l, position p )

for( i=p+1; i<=l->last; i++)

l->data[i-1] = l->data[i]; /*

將位置p+1及以後的元素順序向前移動

*/l->last--; /*

last仍指向最後元素

*/return

true

;}

二、鍊錶的c語言實現

typedef struct lnode *ptrtolnode;

struct

lnode ;

typedef ptrtolnode position;

typedef ptrtolnode list; /*

查詢 */

#define error nullposition find( list l, elementtype x ) /*

帶頭結點的插入

*//*

*/bool

insert( list l, elementtype x, position p )

else }

/*帶頭結點的刪除

*//*

*/bool

delete( list l, position p )

else

}

三、堆疊

1.順序儲存

typedef int

position;

struct

snode ;

typedef

struct snode *stack;

stack createstack(

intmaxsize )

bool

isfull( stack s )

bool

push( stack s, elementtype x )

else}

bool

isempty( stack s )

elementtype pop( stack s )

else

return ( s->data[(s->top)--] );

}

2.鏈式儲存

typedef struct snode *ptrtosnode;

struct

snode ;

typedef ptrtosnode stack;

stack createstack( )

bool

isempty ( stack s )

bool

push( stack s, elementtype x )

elementtype pop( stack s )

else

}

四、佇列

1.線性儲存

typedef int

position;

struct

qnode ;

typedef

struct qnode *queue;

queue createqueue(

intmaxsize )

bool

isfull( queue q )

bool

addq( queue q, elementtype x )

else}

bool

isempty( queue q )

elementtype deleteq( queue q )

else

}

2.鏈式儲存

typedef int

position;

struct

qnode ;

typedef

struct qnode *queue;

queue createqueue(

intmaxsize )

bool

isfull( queue q )

bool

addq( queue q, elementtype x )

else}

bool

isempty( queue q )

elementtype deleteq( queue q )

else

}

資料結構之線性結構 線性表,堆疊,佇列

對於線性表的操作 1 建立線性表 2 確定線性表的長度 3 確定線性表是否為空 4 訪問表中指定位置的節點的值 5 查詢指定值在表中的位置 6 在表中指定位置插入乙個新節點 7 刪除表中指定位置的節點 2.線性表的鏈結儲存結構 用鏈結方式儲存的線性表稱為鍊錶。優點 不必調整節點的位址,儲存單元對儲存...

資料結構 線性表 鍊錶

在之前了解完什麼是資料結構之後 資料結構 線性表 順序表 陣列 我們再來看看線性結構另外一種實現方式 鍊錶順序表中的鍊錶沒有物理上的連續儲存要求,只需要在儲存資料時通過 鏈 的方式將資料進行連線,而這個 鏈 的實現就是通過指標來實現的。鍊錶的連續儲存方式 對於抽象資料型別來說,每一種資料結構都有自己...

資料結構 線性表(陣列 鍊錶 棧 佇列)

線性邏輯結構特徵 集合中存在唯一的第乙個資料元素 最後乙個資料元素,集合中剩餘的每個資料元素均有唯一的直接前驅元素和唯一的直接後繼元素 它用一組連續的記憶體空間,來儲存一組具有相同型別的資料。陣列的空間是從棧分配的。陣列優點 簡單易用 訪問元素快 常數時間 陣列缺點 大小固定 是靜態的 並且要在使用...