線性表分為順序線性表和鏈式線性表
順序線性表:
鏈式線性表:
線性表的特點是:
存在唯一的乙個被稱做「第乙個」元素的資料元素
存在唯一的乙個被稱做「最後乙個」的資料元素
除第乙個之外,集合中的每個資料元素均只有乙個前驅
除最後乙個之外,集合中每個資料元素均只有乙個後繼
順序表:線性表的順序表示,用一組位址連續的儲存單元依次儲存線性表的順序元素。
本文只對順序表實現做分析實現,鏈式實現見下章節。
假設每乙個元素佔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.順序表支援隨機訪問 只...