線性表的順序儲存 順序表

2021-07-08 12:31:00 字數 2880 閱讀 6134

一丶順序表

概念:採用順序儲存的線性表稱為順序表,順序表中邏輯上相鄰的資料元素在物理儲存位置上也是相鄰的。

二丶定義順序表

用一維陣列來描述順序表的資料儲存。由於順序表有插入刪除等操作,即順序表的表長會發生改變。因此是陣列長度足夠大,加入整型變數length來記錄此時線性表中資料元素的個數,順序表的結構如下:

#define maxsize 100

typedef

int elemtype;

typedef

struct

seqlist;

三丶順序表的初始化

順序的初始化即構造乙個空表,將表長length設定為0,表示沒有儲存資料(0號單元不存值)。

seqlist *init_seqlist()

四丶順序表的插入

順序表的插入是指在表的第 i 個位置插入乙個新元素 x,插入後是表長加1。並要注意插入的位置是否正常和此時的表是否已經滿了。

int in_seqlist(seqlist *l,int i,elemtype x)

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

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

l->elem[j+1] = l->elem[j];

l->elem[i] = x;

l->length++;

return true;

}

五丶順序表的刪除

順序表的刪除是指將表中的第 i 個元素從順序表中刪除,刪除後使表長減1。注意刪除的位置是否正確和此時的表是否為空。

int delete_seqlist(seqlist *l,int i)

for(j=i ; j<=l->length-1;j++)

l->elem[j] = l->elem[j+1];

l->length--;

return true;

}

六丶順序表的查詢

在順序表中查詢給定元素x相同的值,找到返回x在表中的位置,否則返回false;

int search_seqlist(seqlist *l,elemtype x)

七丶兩個順序表合併

兩個順序表a和b,其元素均按從大到小排列,然後將這兩個順序表合併成乙個順序表c,要求c也是按從大到小的順序排列。

void

merge_seqlist(seqlist *a,seqlist *b,seqlist *c)

while(i <= a->length)

c->elem[k++] = a->elem[i++];

while(j <= b->length)

c->elem[k++] = b->elem[j++];

c->length = a->length + b->length;

}

總**

#include 

#include

#define true 1

#define false 0

#define maxsize 100

typedef int elemtype;

typedef struct

seqlist;

//順序表的初始化

seqlist *init_seqlist()

//順序表的插入

int in_seqlist(seqlist *l,int i,elemtype x)

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

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

l->elem[j+1] = l->elem[j];

l->elem[i] = x;

l->length++;

return true;

}//順序表的刪除

int delete_seqlist(seqlist *l,int i)

for(j=i ; j<=l->length-1;j++)

l->elem[j] = l->elem[j+1];

l->length--;

return true;

}//順序表的查詢

int search_seqlist(seqlist *l,elemtype x)

//兩個順序表的合併

void merge_seqlist(seqlist *a,seqlist *b,seqlist *c)

while(i <= a->length)

c->elem[k++] = a->elem[i++];

while(j <= b->length)

c->elem[k++] = b->elem[j++];

c->length = a->length + b->length;

}//輸出順序表中的資料

void show_seqlist(seqlist *l)

printf("\n");

}void print()

//測試函式

void try_seqlist()

printf("按任意鍵繼續……");

getchar();

getchar();

} while (choose != 0);

}int main(void)

線性表的順序儲存 順序表

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

線性表的順序儲存 順序表

線性表可以按照其儲存結構劃分為順序表 鍊錶。如下圖 順序表 順序表的描述 1 陣列靜態分配 define maxsize 30 typedef int elemtype typedef structsqlist 2 陣列動態分配 define maxsize 30 typedef int elemt...

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

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