線性表就是零個或多個相同資料的有限序列;線性表按在記憶體中的儲存方法又分為順序儲存和鏈式儲存。本節主要講順序儲存即順序表。
對非空表,a0是表頭,無前驅
an-1是表尾,無後繼
其他的每個元素ai有且僅有乙個直接前驅(ai-1)和乙個直接後繼(ai+1)
1.實現乙個順序表
2.建立乙個空表#define seqlist_max_size 100;
//表長
typedef
int data_t;
//重新命名資料型別
typedef
struct
seqlist_t;
//結構體重命名為seqlist
注:使用malloc要包含標頭檔案seqlist_t*
create_seqlist
(void
) l -> last =-1
;return l;
}
#include
3.釋放順序表(free)
4.判斷表是否為空,若是空表則返回1,否則返回0void
clear_seqlist
(seqlist_t* l)
free
(l);
return
;}
5.判斷表是否已滿int
is_empty_seqlist
(seqlist_t* l)
return
(l->last ==-1);}
6.置空表int
is_full_seqlist
(seqlist_t* l)
return
( l->last == seqlist_max_size-1)
;//返回1表示線性表滿了,返回0表示沒滿
}
7.獲取表的長度void
set_empty_seqlist
(seqlist_t* l)
l->last =-1
;return
;}
8.遍歷表的成員int
get_length_seqlist
(seqlist_t* l)
return l->last+1;
}
9.表成員的插入運算void
show_seqlist
(seqlist_t* l)
for(i=
0;i<=l->last;i++
)return
;}
10.表成員的刪除運算int
insert_seqlist
(seqlist_t* l, data_t x,
int pos)
for(i=l->last;i>=pos;i--
) l->data[i+1]
= l->data[i]
; l->data[pos]
= x;
l->last++
;return0;
}
11.表成員的修改運算int
delete_seqlist
(seqlist_t* l,
int pos)
for(i=pos;i<
get_length_seqlist
(l);i++
) l->last--
;return0;
}
12.表成員的查詢運算int
change_seqlist
(seqlist_t* l, data_t x,
int pos)
l->data[pos]
= x;
return0;
}
int
search_seqlist
(seqlist_t* l,data_t x)
return-1
;}
#include
#include
#include
"seqlist.h"
intmain
(int argc,
char
const
*ar**)
線性表之順序表
資料結構草草學過,不過沒有認真運用過。雖然知道一些最為基本的抽象型別及一些常用操作,不過叫我把這些基本的演算法寫出來我也 是寫不出來的。因為常說資料結構 演算法是乙個程式設計師最基本的素質,所以這次認真加以複習。在複習的同時我盡量將自己學習的其他的 一些基本知識比如c 中的物件導向思想也引入進來,同...
線性表之順序表
線性表 我們都知道是一種常用的資料結構,也是歷來各種考試的重點。今天抽了一些時間把線性表做了總結。線性表是n個資料元素的乙個有限序列。用公式表示為 l a1,a2,a3,a4,an 因為線性表是乙個有限的序列,所以也如上面公式所示,它的各個元素是相繼排放的。那麼它的每個相連的兩項之間都是有乙個邏輯關...
線性表之順序表
線性表的操作 initlist l 初始化操作,建立乙個空的線性表l。listempty l 判斷線性表是否為空表,空返回true,否則返回false。clearlist l 將線性表清空。getelem l,i,e 將線性表l中的第i個位置元素值返回給e。listdelete l,i,e 刪除線性...