- 什麼是線性表
線性表是由n個元素(結點)組成的有限序列。n為線性表的長度,n=0時稱為空表。
- 線性表的邏輯特徵
(1)對於非空的線性表,有且有乙個開始結點,它沒有直接前驅,而僅有乙個直接後繼。
(2)對於非空的線性表,有且有乙個終端結點,它沒有直接後繼,而僅有乙個直接前驅。
(3)對於非空的線性表,內部結點(除去開始結點和終端結點)都有且僅有乙個直接前驅和乙個直接後繼。
- 圖示
- 什麼是順序表
把線性表的結點按邏輯次序依次存放在一組位址連續的儲存單元裡,這種方法儲存的線性表簡稱為順序表。例如一維陣列就是採用順序儲存表示的。
- 順序表的描述
typedef
int datatype;
//該用法有疑惑請看腳注
#define m 100
typedef
struct
sequenlist;
sequenlist l;
我們將與順序表有關的資訊封裝在一起,而將順序表型別sequenlist定義為乙個結構體,這樣定義使得對某一順序表l(l是sequenlist型別的指標變數)的引用僅涉及結構變數*l,它符合程式設計的思想。
- 順序表上的基本運算
資料的插入:對於順序表上的資料插入,除了在表的末尾插入之外,在其他地方插入需要移動插入結點及其後的所有結點,該步驟完成以後才能進行資料插入操作,同時表的長度(last)也需要隨之發生改變(增加),如下圖所示:
**實現:
//移動元素位置(i為資料x將要插入的位置)
for(
int j = l.last; j >= i -
1; j--
)//插入資料(x為插入資料)
l.data[i -1]
= x;
//表的最後乙個元素的指向增加(當前表中實際存放元素數量)
l.last++
;
資料的刪除:對於順序表上資料的刪除,其思想與插入相反。首先選定需要刪除的資料(位置),然後,移動刪除資料之後的元素,均向前移動一位。事實上,刪除資料,並不是真正意義上的刪除,而只是資料覆蓋而已,表現上為資料的刪除,同時表的長度(last)也需要隨之發生改變(減小),如下圖所示:
**實現:
//移動元素位置(i為刪除資料的位置)
for(j = i; j <= l.last; j++
)//表的最後乙個元素的指向減小(當前表中實際存放元素數量)
l.last--
;
表的長度:順序表使用一維陣列來儲存,其長度為該陣列實際儲存資料元素個數。即為last指向的陣列下標值(也是last的值),所以表的長度為last。
表的置空:順序表的置空,是直接將last指向的值賦值為-1,當新的資料進入,又會從陣列0索引處開始覆蓋之前的資料,由於存在last指向,之前的資料不會對後續表中資料產生影響;而不應使用移除資料的方法實現表的置空。
至此,順序表上的關鍵操作(插入、刪除)敘述完畢。
程式執行結果圖:
以下為完整**:
#include
"stdio.h"
#include
"stdlib.h"
typedef
int datatype;
//該用法有疑惑請看腳注
#define m 100
#define n 10
typedef
struct
sequenlist;
sequenlist l;
//靜態
/*sequenlist * create_sequenlist()
//動態
*/void
shuru()
printf
("\n\t\t資料已產生!\n");
}void
shuchu()
}else
}void
zhikong()
void
changdu()
else
}void
charu()
else
else
//插入資料(x為插入資料)
l.data[i -1]
= x;
//表的最後乙個元素的指向增加(當前表中實際存放元素數量)
l.last++
;shuchu()
;}}}
else
}void
shanchu()
else
//表的最後乙個元素的指向減小(當前表中實際存放元素數量)
l.last--
;shuchu()
;}}else
}void
main()
if(b !=0)
}printf
("\n\t\t謝謝使用!qwq\n\n\t\t");
}
如有錯誤,歡迎指正! _
注意:typedef用法類似巨集定義,意思和define相同,只是寫法不同。typedef int datatype的作用在於在程式設計中,為了使一些複雜型別等更容易被理解、記憶,加速開發,而使用的一種技術。這相當於給一些型別乙個別稱,起到的作用都是相同的,此處就相當於給int型別起了乙個別稱叫datatype。1
↩︎
資料結構(C語言)線性表(順序表)
首先線性表的基本函式 1.initlist l 建立乙個空的線性表l 2.destorylist l 如果線性表已經存在的話,則銷毀線性表l 3.listlength l 返回線性表的元素個數 4.getlist l,i e 用e返回線性表第i個元素的值 5.locateelem l,e compa...
資料結構 C語言線性表 順序表
線性表是最常用且最簡單的一種資料結構。簡言之,乙個線性表是n個資料元素的有限序列。在資料元素的非空有限集合中 存在唯一的乙個被稱做 第乙個 的資料元素 存在唯一的乙個被稱做 最後乙個 的資料元素 除第乙個之外,集合中的每個資料元素均只有乙個前驅 除最後乙個之外,集合中每個資料元素均只有乙個後繼 in...
C語言資料結構線性表 順序表2
include define ok 1 define error 0 define maxsize 100 定義資料元素型別 typedef structelemtype 定義順序線性表 typedef structsqlist 初始化線性表 void inistlist sqlist pl 建立線...