線性表的順序儲存 順序表

2021-08-08 03:22:36 字數 2193 閱讀 4087

線性表可以按照其儲存結構劃分為順序表、鍊錶。如下圖:

順序表

順序表的描述:

(1)陣列靜態分配

#define maxsize 30          

typedef int elemtype;

typedef structsqlist;

(2)陣列動態分配

#define maxsize 30         

typedef int elemtype;

typedef structsqlist;

【注意】
l.data=(elemtype *)malloc(sizeof(elemtype )*initsize);//c初始記憶體分配語句

l.data= new elemtype[initsize];//c++

基本操作:

initlist(&l):初始化線性表。構造乙個空的線性表。

length(l):求表長。

locateelem(l,e):按值查詢。

getelem(l,i):獲取表l中第i個位置上的元素的值。

listinsert(&l,i,e):在第i個位置插入元素e。

listdelete(&l,i,&e):刪除第i個位置的元素,並用e返回其值。

printlist(l):輸出l。

empty(l):判空。

destroylist(&l):銷毀,釋放空間。

常見基本操作具體**:

void initlist(sqlist &l)
void listinsert(sqlist&l,int i,elemtype e)

//判斷空間是否已滿

if(l.length>=maxsize)

//插入,從第i個元素起,所有元素向後移

for(int j=l.length;j>=i;j--)

//給第i個位置賦值

l.data[i-1]=e;

//表長增加

l.length++;

}

void listdelete(sqlist &l,int i,elemtype &e)

//將第i個位置的值賦值給e

e=l.data[i-1];

//把從第i+1個元素起向前移

for(int j=i+1;j<=l.length;j++)

//修改表長

l.length--;

}

int locateelem(sqlist l,elemtype e)

}return 0;

}

void printlist(sqlist l)

printf("表長:%d\n",length(l));

printlist(l);

elemtype ch;

int pos;

printf("請輸入要刪除的元素位置:\n");

scanf("%d",&pos);

listdelete(l,pos,ch);

printf("刪除%d之後:\n",ch);

printf("表長:%d\n",length(l));

printlist(l);

printf("請輸入要查詢的元素值:\n");

scanf("%d",&ch);

if(locateelem(l,ch)==0)else

}

結果如下:

線性表的順序儲存 順序表

一丶順序表 概念 採用順序儲存的線性表稱為順序表,順序表中邏輯上相鄰的資料元素在物理儲存位置上也是相鄰的。二丶定義順序表 用一維陣列來描述順序表的資料儲存。由於順序表有插入刪除等操作,即順序表的表長會發生改變。因此是陣列長度足夠大,加入整型變數length來記錄此時線性表中資料元素的個數,順序表的結...

線性表的順序儲存 順序表

線性表,簡稱表,是n n 0 個具有相同型別的資料元素的有限序列。1 線性表是乙個相當靈活的資料結構,對線性表的資料元素不僅可以進行訪問訪問,還可以進行插入和刪除等操作。2 a1稱為第1個元素,an稱為最後乙個元素,任意一對相鄰的資料元素a i 1 和a i 1序偶關係 且a i 1 稱為a i 的...

線性表的順序儲存(順序表)

課程名 資料結構 實驗目的 1 掌握線性表的定義 2 掌握線性表的基本操作,如建立 查詢 插入和刪除等。實驗要求 定義乙個包含學生資訊 學號,姓名,成績 的順序表和煉表,使其具有如下功能 1 根據指定學生個數,逐個輸入學生資訊 2 逐個顯示學生表中所有學生的相關資訊 3 根據姓名進行查詢,返回此學生...