資料結構篇 線性表

2021-09-11 01:37:31 字數 3299 閱讀 3024

線性表的定義

由零個或多個資料元素組成的有限序列。

關鍵點:

首先它是乙個序列,也就是說元素之間是有個先來後到的。 

若元素存在多個則第乙個元素無前驅,最後乙個元素無後繼,其他元素都有且只有乙個前驅和後繼。

線性表強調是有限的,事實上無論計算機發展到多強大,它所處理的元素都是有限的

抽象資料型別

資料型別:是指一組性質相同的值的集合及定義在此集合上的一些操作的總稱

在c語言中,按照取值的不同,資料型別可以分為兩類:

原子型別:不可以再分解的基本型別,例如整型,浮點型,字元型等。

結構型別:由若干個型別組合而成,是可以再分解的,例如整型陣列,結構體等

抽象:是指抽取出事物具有的普遍性的本質。它要求抽取出問題的特徵而忽略非本質的細節,是對事物 的乙個概括。抽象是一種思考問題的方式,它隱藏了繁瑣的細節。

我們對已有的資料型別進行抽象,就有了抽象資料型別。 abstract data type(adt)是指乙個數學模型及定義在該模型上的一組操作

線性表的抽象資料型別

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

#include#define max_size 20 //線性表的最大容量

#define ok 1 //返回狀態 成功

#define error 0 //返回狀態 失敗

#define not_exist 0 //狀態 不存在

#define true 1

#define false 0

#define int status; //狀態 ok error

typedef int elemtype; //線性表的元素型別 int

typedef struct seqlist;

// *** 相當於struct裡面的那一部分

/*初始化

void init(seqlist *l,int position,elemtype e)

對某個函式進行初始化

增 status insert(seqlist *l,int position,elemtype e):

在順序表中某個位置插入某個元素

返回插入成或失敗

刪 status delete(seqlist *l,int position,elemtype *e):

在某個順序表中某個位置刪除元素,並將刪除前的元素賦值給*e

返回刪除成功或者失敗

查 status get(seqlist *l,int position,elemtype *e)

根據位置查某個順序表中的元素,並將查詢元素賦值給*e

返回查詢成功或者失敗

int locate(seqlist *l,elemtype e)

查詢某個表中元素的位置

int size(seqlist *l)

返回順序表的長度

void show(seqlist *l )

列印順序表

*/void init(seqlist *l)

}status insert(seqlist *l,int position,elemtype e)

if(position<1||position>l->length+1)

for(int i=l-length;i>position-1;i--)

l-datas[position-1]=e;

l-length++;

return ok;

}status delete(seqlist *l,int position,elemtype *e)

if(position<1||position>l->length)

*e=l->datas[position-1];

for(int i=position-1;ilength-1;i++)

l->length--;

return ok;

}status get(seqlist *l,int position,elemtype *e)

if(position<1||position>l-length)

*e=l->datas[position-1];

return ok;

}int locate(seqlist *l,elemtype e)

for(int i=0;ilength;

} status isempty(seqlist *l)

void clear(seqlist *l)

void show(seqlist *l)

printf("[");

for(int i=0;ilength-1)else }}

// 結構體 如果通過普通結構體變數呼叫元素 l.length

// 如果通過指標結構體變數呼叫元素 l->length

void main()

break;

case 4:

printf(">>>請輸入查詢的位置:");

scanf("%d",&position);

if(get(&l,position,&e))

break;

case 5:

printf(">>>請輸入查詢的元素:");

scanf("%d",&e);

printf(">>>該元素位置為 %d\n",locate(&l,e));

break;

case 6:

printf(">>>長度為 %d\n",size(&l));

break;

case 7:

clear(&l);

break;

case 8:

if(isempty(&l))else

break;

case 9:

show(&l);

break;

case 0:

return;

default:

printf(">>>無此操作!\n\a");

break;

} }}

資料結構篇 線性表

熱門 網 m.v1122.com 線性表的抽象資料型別的定義 adt 線性表 list data 線性表的資料物件集合為,每個元素的型別均為datatype。其中,除了第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,除最後乙個元素an外,每乙個元素有且只有乙個直接後繼元素。資料元素之間的關係是...

學習篇 線性表的資料結構

adt list data object set datatype int float 前驅元素,後繼元素。元素之間的關係是一對一的。operation initlist l 初始化操作,建立空線性表l listempty l 判斷線性表是否為空,l為空則返回true clearlist l 清空線...

演算法與資料結構線性表篇

1.刪除長度為n的順序表的第i個資料元素之前需要移動元素中的n i個元素。2.對長度為n的線性表採用順序查詢,在等概率的條件下,查詢成功的平均檢索長度為 n 1 2。在長度為n的順序表中刪除第i 1 i n 個資料元素時需要移動n i個元素,在長度為n的順序表中的第i 1 i n 個元素之前插入乙個...