一、相關知識點
1、線性表的定義:線性表的資料物件集合為,每個元素的型別相同。其中,除了第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素。除了最後乙個元素an外,每乙個元素有且只有乙個直接後繼元素。資料元素之間的關係是一對一的關係。
int *list=new int[n];
注意線性表的下標是從1開始的,而陣列的下標的是從0開始的。
意思就是:list[0]=a1;list[1]=a2;.......list[n-1]=an;
線性表的順序儲存結構**:
#define maxsize 20; //儲存空間初始分配量
typedef int elemtype;
typedef struct
sqlist
3、順序儲存結構需要三個屬性:
(1)儲存空間的起始位置:陣列data,它的儲存空間就是儲存空間的儲存位置;
(2)線性表的最大儲存容量:陣列長度maxsize;
(3)線性表的當前長度:length;
注意陣列長度和線性表長度的區別:前者是我們預先定義好的,是不變的;後者隨著我們對線性表刪除,插值等操作是可以改變的。
線性表的長度是小於等於陣列長度的。
二、用c++實現順序儲存結構的建立、插入、刪除等操作
#include using namespace std;
const int maxsize = 20;
template < typename t > //類模板定義
class seqlist
;template seqlist::seqlist(t list, int n)
for (int i = 0; i < n; i++)
this->length = n;
}templateseqlist::~seqlist()
templatevoid seqlist::printlist()
cout << endl;
}templatevoid seqlist::getlistlength()
templatet seqlist::get(int i)
else }
templateint seqlist::getindex(t x)
return 0;
}templatevoid seqlist::insertlist(int i, t x)
else
data[i - 1] = x;
length++;
} }}templatet seqlist::deletelist(int i)
else
length--;
return x; }}
void main()
; seqlistseqlist(list, 7);
seqlist.printlist();
seqlist.getlistlength();
seqlist.get(3);
cout << seqlist.getindex(2) << endl;
seqlist.insertlist(2, 10);
seqlist.printlist();
seqlist.getlistlength();
seqlist.deletelist(2);
seqlist.printlist();
seqlist.getlistlength();
system("pause");
}
函式輸出:
資料結構學習筆記(2)線性表
1 2 線性表及其基本運算 3 1。線性表 linear list n個資料元素的有限序列,記為 l a1,a2,an 4 定義 linear list d,r 5 d d0表示相同的資料物件。6 r n 7 8 2.基本運算 9 void initiate l 初始化操作 10 int lengt...
資料結構學習 線性表(2)
編寫乙個程式exp2 2.cpp,實現單鏈表的各種基本運算 假設單鏈表的元素型別為char 並在此基礎上完成如下功能 1 初始化單鏈表h 2 採用尾插法依次插入元素a,b,c,d,e 3 輸出單鏈表h 4 輸出單鏈表h長度 5 判斷單鏈表h是否為空 6 輸出單鏈表h的第3個元素 7 輸出元素a的位置...
資料結構學習筆記 線性表
線性表是零個或多個資料元素的有限序列。線性表的資料物件集合為。其中,除第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,除了最後乙個元素an外,每個元素有且只有乙個直接後繼元素。資料元素之間的關係是一對一的關係 線性表的順序儲存結構指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。簡單的說...