線性表是最常用且最簡單的一種資料結構,簡言之,乙個線性表是n個資料元素的有限序列。
1、 線性表長度:線性表中元素的個數n ( n >= 0)定義為線性表的長度
2、 空表:線性表長度 = 0
1、插入
2、追加(特殊形式的插入)
3、刪除
標號(看作陣列名,但不是陣列):
編號(pos):
追加(特殊形式的插入):
源**:
1/*1、 線性表 */2
/*3一些理解:
41、在對線性表刪除的時候,必定要進行位址的變換,而最後乙個元素交換後必定還是保留的,
5但是可以在 顯示全表 和 顯示表中單個元素中 做限制,讓其不影響。例如:
6list : 1, 2, 3, 4, 5
7delete pos(2): 1, 3, 4, 5
8而lsit(5)還是5,雖然它賦值給 lsit(4),但是做了限制後,並不影響,而在追加或增插入中,會被自動覆蓋。
92、而且在插入和追加中,需要讓使用長度加1;同理在刪除中,須要讓使用長度減1。
103、有些函式中的返回值 是 ture = 1, 這樣做的目的是通過函式可以進行判斷,從而使**更健壯。
11*/
1213 #include 14 #include
15 #include 16
17#define maxsize 10 //
本來是準備用於表的初始化,給予固定的表最大長度,但是沒用
18#define ture 1
19#define false 0
2021
struct
list;
2728 typedef struct list sqlist; //
別名 sqlsit 等價於 struct list
2930
31void init_list( sqlist *l, int length ); //
初始化某個線性表,自定義長度
32void del_list( sqlist *l ); //
銷毀某個線性表
33void cle_list( sqlist *l ); //
重置存在的線性表為空表
3435
int list_isempty( sqlist *l ); //
判斷線性表是否為空表
36int list_isfull( sqlist *l ); //
判斷線性表是否為滿表
3738
void list_showall( sqlist *l ); //
顯示表中所有元素
39int list_showone( sqlist *l, int pos ); //
顯示表中第幾個元素
40int list_insert( sqlist *l, int pos, int elem ); //
向表pos位置中插入乙個元素,pos編號從1開始
41int list_delete( sqlist *l, int pos, int *pelem ); //
往表中刪除pos位子的乙個元素並獲得刪除的值
42往表中追加乙個elem的值並獲得增加的值
43int list_getelem( sqlist *l, int pos, int *pelem ); //
獲得表中pos位子的元素
4445
int list_length( sqlist *l ); //
返回表最大長度
46int list_elemnum( sqlist *l ); //
返回表中元素個數
4748
4950
int main(void)51
8788
return0;
89}9091
void init_list( sqlist *l, int
length )
9299
else
100104
return
;105
}106
107void del_list( sqlist *l )
108111
112void cle_list( sqlist *l )
113116
117int list_isempty( sqlist *l )
118124
125int list_isfull( sqlist *l )
126132
133void list_showall( sqlist *l )
134147
}148
149int list_showone( sqlist *l, int
pos )
150155
if ( pos < 1 || pos > l->cnt ) //
判斷顯示位置是否錯誤
156160
else
161164
return0;
165}
166167
int list_insert( sqlist *l, int pos, int elem ) //
pos從1開始
168175
if ( pos < 1 || pos > l->len )
176180
for ( i = l->cnt ; i >= pos ; i-- ) //
插入演算法
181184 l->pbase[i] =elem;
185 l->cnt++; //
表使用長度加1
186187
return
ture;
188}
189190
int list_delete( sqlist *l, int pos, int *pelem )
191198
if ( pos < 1 || pos > l->cnt )
199203 *pelem = l->pbase[pos-1]; //
刪除的元素通過指標獲取
204for( i = pos; i < l->cnt; ++i ) //
刪除演算法
205208 (l->cnt)--; //
表使用長度減1
209210
return
ture;
211}
212213
214220 *pelem =elem;
221 l->pbase[l->cnt] =elem;
222 l->cnt++;
223224
return
ture;
225}
226227
228int list_getelem( sqlist *l, int pos, int *pelem )
229235 *pelem = l->pbase[pos-1]; //
通過指標獲取追加的元素
236237
return
ture;
238}
239240
int list_length( sqlist *l )
241244
245int list_elemnum( sqlist *l )
246
資料結構之線性表 1
線性表一般分為順序表和煉表,本篇是對順序表的回顧,以c 建立簡單學生健康管理系統為例。順序表是線性表基於陣列的儲存表示。其定義是 將線性表中的所有項,根據其邏輯順序 有序或無序皆可 依次儲存到一片連續的空間裡面,空間的開始位置會被指定好 一般實際起始位置在執行時分配 1.順序表節點的結構體定義 st...
資料結構之線性表(1)
線性表 零個或多個資料元素的有限序列。在較複雜的線性表中,乙個資料元素可以由若干個資料項組成。線性表抽象型別定義 adt 線性表 list data operation initlist l 初始化線性表 listempty l 線性表為空返回true,否則返回false clearlist l 清...
資料結構之線性表(1)
部分可以先看一下不用理解,也可以忽略主要對概念的理解,只有把概念理解好了,才能知道題目怎麼去解 線性表是n個資料特性相同的元素的組成有限序列,是其他資料結構的基礎 線性表的邏輯結構無疑就是線性結構線性結構有很多如後面要學的棧,佇列,串,陣列 都是線性結構,而線性表是最基本的線性結構 知道邏輯結構之後...