資料結構 線性表之順序表

2021-10-10 23:13:57 字數 2677 閱讀 3330

線性表是包含若干資料元素的乙個線性序列

記為: l=(a0, … ai-1, ai, ai+1 … an-1)

l為表名,ai (0≤i≤n-1)為資料元素;n為表長,n>0 時,線性表l為非空表,否則為空表。

線性表l可用二元組形式描述:

l= (d,r)即線性表l包含資料元素集合d和關係集合r

d=r=

關係符在這裡稱為有序對,表示任意相鄰的兩個元素之間的一種先後次序關係。ai是ai+1的直接前驅, ai+1是ai的直接後繼。

線性表的特徵:

對非空表,a0是表頭,無前驅;

an-1是表尾,無後繼;

其它的每個元素ai有且僅有乙個直接前驅ai-1和乙個直接後繼ai+1。

線性表的順序儲存結構有儲存密度高及能夠隨機訪問等優點

但存在以下不足:

(1)要求系統提供一片較大的連續儲存空間。

(2)插入、刪除等運算耗時,且存在元素在儲存器中成片移動的現象;

sqlist.**件

#define n 128

typedef

int data_t;

typedef

struct

sqlist,

*sqlink;

sqlink list_create()

;//建立順序表

intlist_clear

(sqlink l)

;//清除

intlist_empty

(sqlink l)

;//判空

intlist_length

(sqlink l)

;//表長

intlist_locate

(sqlink l,data_t value)

;//元素定位

intlist_insert

(sqlink l,data_t value,

int pos)

;//插入

intlist_delete

(sqlink l,

int pos)

;//刪除

intlist_merge

(sqlink l1,sqlink l2)

;//合併l1和l2,l1 = l1 u l2

intlist_purge

(sqlink l)

;//除重

intlist_show

(sqlink l)

;//展示

sqlist.c檔案

#include

#include

"sqlist.h"

#include

#include

sqlink list_create()

memset

(l,0

,sizeof

(sqlist));

l->last =-1

;return l;

}int

list_clear

(sqlink l)

intlist_empty

(sqlink l)

intlist_length

(sqlink l)

intlist_locate

(sqlink l,data_t value)

return-1

;}intlist_insert

(sqlink l,data_t value,

int pos)

if(pos <

0|| pos > l->last+1)

for(i = l->last; i>=pos; i--

) l->data[pos]

= value;

l->last++

;return0;

}int

list_delete

(sqlink l,

int pos)

if(pos <

0||pos>l->last)

for(i=pos+

1; i<=l->last; i++

) l->last--

;return0;

}int

list_merge

(sqlink l1, sqlink l2)

i++;}

return0;

}int

list_purge

(sqlink l)

else}if

(j<0)

}return0;

}int

list_show

(sqlink l)

puts(""

);return0;

}

test.c檔案

#include

#include

"sqlist.h"

#include

#include

intmain

(int argc,

const

char

*ar**)

把這三個檔案放乙個資料夾,然後在linux裡執行gcc *.c -wall然後執行./a.out

案例是運用list_delete函式實現刪除功能,還有其它函式功能比如插入、合併、去重…等你去實現

資料結構線性表之順序表

純手打順序表相關操作,包括順序表的建立 初始化 輸出 插入 刪除 銷毀等,僅供自己回顧使用,可能會有不對的或者不恰當的地方望大家指正,共同學習。如下 資料結構順序表 include include include define maxsize 100 using namespace std type...

mysql 線性表 資料結構 線性表之順序線性表

public class sequencelist else stringbuilder sb new stringbuilder for int i 0 i size i int len sb.length public class sequencelisttest public static v...

資料結構 線性表 順序表

豐富了前邊的功能,更加完善。include include define list init size 100 線性表儲存空間的初始分配量 define listincrement 10 線性表儲存空間的分配增量 using namespace std const int overflow 2 ty...