線性表的順序儲存實現

2021-10-19 07:27:09 字數 1948 閱讀 4888

seqlist.h標頭檔案

1 //線性表的順序儲存實現

2 3 #ifndef seqlist_h_include

4 #define seqlist_h_include

5 6 #include 7 #include 8 #include 9

10 typedef int elementtype;

11 #define maxsize 10

12 #define error -1

13 14 typedef int position; //這裡的位置是陣列的整型下標,從0開始

15 typedef struct lnode* ptrtonode;

16 struct lnode ;

20 typedef ptrtonode list;

21 22 //生成乙個空的順序鍊錶

23 list makeempty();

24 25 //根據下標查詢元素

26 elementtype findelem(list l, int i);

27 28 //查詢指定元素的下標

29 position find(list l, elementtype x);

30 31 //在第i個元素後插入x,即在下標為i - 1處插入x

32 bool insert(list l, elementtype x, int i);

33 34 bool delete(list l, int i);

35 36 void printlist(list l);

37 38 #endif

seqlist.c

1 #include "seqlist.h"

2 3 list makeempty()

4 12 l->last = -1;

13 return l;    //l是乙個結點指標,返回乙個指標的拷貝,而不是整個順序表的拷貝

14 }

15 16 elementtype findelem(list l, int i)

17 24 return l->data[i];

25 }

26 27 position find(list l, elementtype x)

28 36

37 bool insert(list l, elementtype x, int i)

38 45 if (i < 1 || i > l->last + 2) //檢查插入位置的合法性:是否在1 ~ n + 1.n 為當前元素個數,即last + 1

46

50 for (j = l->last; j >= i - 1; j--)

51 l->data[j + 1] = l->data[j];

52 l->data[i - 1] = x;

53 l->last++;

54 return true;

55 56 }

57 58 bool delete(list l, int i)

59 66 for (j = i - 1; j < l->last; j++)

67 l->data[j] = l->data[j + 1];

68 l->last--; //last仍指向最後乙個元素

69 return true;

70 }

71 72 void printlist(list l)

73 80 for (i = 0; i <= l->last; i++)

81 printf("%d ", l->data[i]);

82 printf("\n");

83 }

順序儲存線性表實現

在計算機中用一組位址連續的儲存單元依次儲存線性表的各個資料元素,稱作線性表的順序儲存結構。順序儲存結構的主要優點是節省儲存空間,因為分配給資料的儲存單元全用存放結點的資料 不考慮c c 語言中陣列需指定大小的情況 結點之間的邏輯關係沒有占用額外的儲存空間。採用這種方法時,可實現對結點的隨機訪問,即每...

線性表 順序儲存實現

linearlist.h pragma once const int maxsize 20 typedef int datatype class dataarr class linearlist linearlist.cpp include linearlist.h include using na...

線性表的順序儲存 線性表的順序儲存結構

1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...