資料結構 線性表(鏈式 單)

2021-10-10 05:13:17 字數 3005 閱讀 9181

線性表是最常用且最簡單得一種資料結構。簡言之,乙個線性表是n個資料元素得有限序列。

typedef

int elemtype;

typedef

struct lnodelnode,

*linklist;

#ifndef __linklist_h__

#define __linklist_h__

#include

#include

typedef

int datatype;

typedef

struct nodelistnode,

*linklist;

extern linklist list_create()

;//建立乙個空鍊錶

extern linklist list_create1()

;//尾插法建立

extern

void

list_show

(linklist h)

;//輸出

extern

void

list_reverse

(linklist h)

;//倒序輸出

extern linklist list_locate

(linklist h,

int pos)

;//按位置查詢

extern linklist list_get

(linklist h,datatype value)

;//按值查詢

extern

intlist_delete

(linklist h,

int pos)

;//按位置刪除

extern

intlist_insert

(linklist h,

int pos,datatype value)

;//按位置插入

extern

intlist_head_insert

(linklist h,datatype value)

;//頭插入

extern

intlist_order_insert

(linklist h,datatype value)

;//順序插入

extern

void

list_sort

(linklist h)

;//排序

#endif

#include

"linklist.h"

linklist list_create()

h->data =0;

h->next =

null

;return h;

}linklist list_create1()

h->data =0;

h->next =

null

; r = h;

while(1

)if((p =

(linklist)

malloc

(sizeof

(listnode)))

==null

) p->data = value;

p->next =

null

; r->next = p;

r = p;

}return h;

}void

list_show

(linklist h)

puts(""

);}linklist list_locate

(linklist h,

int pos)

while

(p->next && iif(i==pos)

return p;

else

}linklist list_get

(linklist h,datatype value)

return p;

}int

list_head_insert

(linklist h,datatype value)

p->data = value;

p->next = h->next;

h->next =p;

return0;

}int

list_insert

(linklist h,

int pos,datatype value)

else

if(p ==

null

)else

q->data = value;

q->next = p->next;

p->next = q;

return0;

}}intlist_delete

(linklist h,

int pos)

else

if(p ==

null

|| p->next ==

null

)else

}void

list_reverse

(linklist h)

}int

list_order_insert

(linklist h,datatype value)

p->data = value;

q=h;

while

(q->next && q->next->data < value)

p->next = q->next;

q->next = p;

return0;

}void

list_sort

(linklist h)

q->next = r->next;

r->next = q;

}}

makefile和test.c請自行書寫測試

資料結構 線性表鏈式儲存

對於線性鍊錶,有兩種表示方法,一種是包含頭節點的情況,如下圖 一種是不包含頭節點的情況,如下圖 本文中對線性鍊錶的表示,利用的是帶頭節點的定義方式。使用c 實現了線性鍊錶建立,初始化,刪除,插入,清空,遍歷,有序鍊錶合併等操作。煉表頭 頭指標 頭結點 煉表頭 指的是線性表第乙個元素所在結點 頭指標 ...

資料結構 線性表(鏈式儲存)

1 順序表 需要一片連續的記憶體空間,成員可以隨機訪問,訪問效率高 插入刪除資料存在資料搬移的現象,效率低 儲存密度高 鍊錶的特點 不需要連續的記憶體空間,不能隨機訪問元素,訪問效率低 插入刪除資料不存在資料搬移的現象,效率高 儲存密度比較低 2 無頭鍊錶 第乙個節點為資料節點,加入刪除第乙個節點,...

資料結構 線性表鏈式儲存結構

鏈式儲存 用一組任意的儲存單元儲存線性表中的資料元素。用這種方法儲存的線性表簡稱線性鍊錶。儲存鍊錶中結點的一組任意的儲存單元可以是連續的,也可以是不連續的,甚至是零散分布在記憶體中的任意位置上的。鍊錶中結點的邏輯順序和物理順序不一定相同。即不要求邏輯上相鄰的元素在物理位置上也相鄰 為了正確表示結點間...