C 實現線性表順序儲存例項(一)

2021-09-25 20:23:18 字數 1881 閱讀 3290

下面是結合c++類模板,給出的線性表順序儲存結構實現的例項,剛入門c++不久,程式中如有bug還望大家多多指教!

//線性表順序儲存結構實現

#include "stdio.h"

#include "iostream"

using namespace std;

const int maxsize = 100;

templateclass sqlist

//析構函式

int lengthsqlist(); //返回線性表的長度

void outputsqlist(); //輸出線性表

int emptysqlist(); //線性表已存在的條件下,判斷是否為空表

void locatesqlist(t x); //輸出資料元素x的位置資訊

t getelemsqlist(int i); //獲取i位置的元素值

void insertsqlist(int i, t x); //在表i位置插入資料x

int deletesqlist1(t x); //刪除資料元素x

t deletesqlist2(int i);

private:

t data[maxsize];

int length;

};templatesqlist::sqlist(t a, int n)

templatesqlist::sqlist(int n)

templateint sqlist::lengthsqlist()

templateint sqlist::emptysqlist()

templatevoid sqlist::locatesqlist(t x)

else

cout << "沒有找到" << x << "元素!" << endl; }}

templatet sqlist::getelemsqlist(int i)

if (i < 0 && i > maxsize)

throw "輸入i引數非法";

else }

templatevoid sqlist::insertsqlist(int i, t x)

}templateint sqlist::deletesqlist1(t x)

for (int j = n; j < length; j++)

length--;

return n; }}

templatet sqlist::deletesqlist2(int i)

}templatevoid sqlist::outputsqlist()

int main()

; int i = 5;

sqlistsqlist1(arry, i);

sqlist1.outputsqlist();

cout << "線性表的長度是:" << sqlist1.lengthsqlist() << endl;

sqlist1.locatesqlist(2);

cout << "線性表中位置為2的元素是:" << sqlist1.getelemsqlist(2) << endl;

cout << "刪除元素4" << endl;

sqlist1.deletesqlist1(2);

sqlist1.outputsqlist();

cout << "在位置2上新增元素110" << endl;

sqlist1.insertsqlist(2, 110);

sqlist1.outputsqlist();

return 0;

}

測序測試結果圖:

C 實現線性表的順序儲存例項(二)

這裡需要注意的乙個問題是當使用類模板時,類中方法的宣告和定義需放到.件中,不能分開放到.件和.cpp檔案中,否則執行時會出現無法解析外部命令的錯誤!還有一點就是,當遇到 無法解析外部命令 時,應及時檢查類中宣告的方法是否在.件和.cpp檔案中有定義,再去找其它原因!下面是 及測試結果截圖 sqlis...

順序儲存線性表實現

在計算機中用一組位址連續的儲存單元依次儲存線性表的各個資料元素,稱作線性表的順序儲存結構。順序儲存結構的主要優點是節省儲存空間,因為分配給資料的儲存單元全用存放結點的資料 不考慮c c 語言中陣列需指定大小的情況 結點之間的邏輯關係沒有占用額外的儲存空間。採用這種方法時,可實現對結點的隨機訪問,即每...

線性表 順序儲存實現

linearlist.h pragma once const int maxsize 20 typedef int datatype class dataarr class linearlist linearlist.cpp include linearlist.h include using na...