線性表的定義
由零個或多個資料元素組成的有限序列。
關鍵點:
首先它是乙個序列,也就是說元素之間是有個先來後到的。
若元素存在多個則第乙個元素無前驅,最後乙個元素無後繼,其他元素都有且只有乙個前驅和後繼。
線性表強調是有限的,事實上無論計算機發展到多強大,它所處理的元素都是有限的
抽象資料型別
資料型別:是指一組性質相同的值的集合及定義在此集合上的一些操作的總稱
在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 個元素之前插入乙個...