資料結構 順序線性表的插入 刪除 合併實現

2021-07-07 04:48:55 字數 2600 閱讀 8774

線性表分為順序線性表鏈式線性表
順序線性表:

鏈式線性表:

線性表的特點是:

存在唯一的乙個被稱做「第乙個」元素的資料元素

存在唯一的乙個被稱做「最後乙個」的資料元素

除第乙個之外,集合中的每個資料元素均只有乙個前驅

除最後乙個之外,集合中每個資料元素均只有乙個後繼

順序表:線性表的順序表示,用一組位址連續的儲存單元依次儲存線性表的順序元素。

本文只對順序表實現做分析實現,鏈式實現見下章節。

假設每乙個元素佔s個位元組,第乙個元素的儲存位址loc(a1)作為順序表的起始位址,第i個元素的儲存位置為:

loc(ai) = loc(a1) + (i-1)*s

順序表的操作主要分為線性表的初始化,插入元素,刪除元素,合併線性表。此處只做演算法分析。

1、插入元素

確定插入位置:

將要插入位置後的元素後移一位:

插入該元素:

2、刪除元素

確定刪除位置:

去除要刪除的元素:

刪除元素後面的元素前移一位:

3、合併線性表

l1中第乙個元素和l2中第乙個元素比較,如果l1的元素比l2元素小,則將l1中第乙個元素插入l3中,將l1指標指向下乙個元素;如果l1的元素比l2元素大,將l2中第乙個元素插入l3中,將l2指標指向下乙個元素;依次迴圈,直到合併完成。

實現**如下:

/*list.h*/

#ifndef __list_h__

#define __list_h__

#define list_lenght 10

#define add_lenght 5

typedef struct

list;

bool initlist(list &list);

bool insertlist(list &list, int i, int value);

bool deletelist(list &list, int i, int &value);

bool unionlist(list list1, list list2, list &list3);

void display(list list);

#endif

/*list.cpp*/

#include #include #include "list.h"

bool initlist(list &list)

list.lenght = 0;

list.listsize = list_lenght;

return true;

}bool insertlist(list &list, int i, int value)

if(list.lenght == list.listsize)//如果線性表滿了,需要新增空間

list.listsize = list.listsize + add_lenght;

} //將要插入的位置之後的所有元素向後移動一位

for(int j=list.lenght; j>=i; j--)

list.elem[j] = list.elem[j-1];

//插入該元素

list.elem[i-1] = value;

list.lenght++;

return true;

}bool deletelist(list &list, int i, int &value)

value = list.elem[i-1];

for(int j=i-1; jbool unionlist(list list1, list list2, list &list3)

list3.listsize = list3.listsize + add_lenght;

} int i = 0, j = 0, k = 0;

while(i < list1.lenght && j < list2.lenght)

else

}while(i

/*

本程式完成了線性表的初始化,插入、刪除、合併功能

main函式

*/#include #include #include "list.h"

int main()

結果如下:

刪除的值是43

線性表l1:

第 1 個元素是 8

第 2 個元素是 67

第 3 個元素是 5

線性表l2:

第 1 個元素是 3

第 2 個元素是 63

第 3 個元素是 55

合併l1,l2的線性表l3:

第 1 個元素是 3

第 2 個元素是 8

第 3 個元素是 63

第 4 個元素是 55

第 5 個元素是 67

第 6 個元素是 5

資料結構 線性表順序儲存插入和刪除操作

線性表的操作 1 initlist l 初始化操作,建立乙個空的線性表l 2 listempty l 判斷線性表是否為空,如果為空,返回true,否則返回false 3 clearlist l 將線性表清空 4 getelem l,i,e 將線性表中的第i個位置元素值返回給e 7 listdelet...

資料結構 順序線性表

順序線性表標頭檔案 ifndef vzhangseqlist define vzhangseqlisttypedef void seqlist typedef void seqlistnode 建立線性表 declspec dllexport 如果在動態庫中定義標頭檔案 這句話不可以缺少 不然會報錯...

資料結構 線性表 順序表 插入以及擴充套件

順序表是線性表的順序儲存結構形勢 1.線性表是邏輯結構,表示元素之間的一一對應相鄰關係,順序表儲存結構,指用連續的儲存單元依次儲存線性表中表的資料元素 3.順序表通常使用一維陣列來實現,分為靜態和動態分配,靜態分配時空間大小一開始分配好 固定的,動態分配動態調整 主動適應 4.順序表支援隨機訪問 只...