線性表順序儲存的C C 實現

2021-09-19 11:33:52 字數 3409 閱讀 6739

線性表順序儲存

線性表可以按順序以及鏈式兩種方式儲存,順序儲存主要靠c語言陣列實現,而鏈式儲存主要用到鍊錶。下面是線性表順序結構的基本操作及**實現。

表的輸入比較簡單,陣列遍歷輸入輸出即可,不多解釋。

void

input

(sqlist *a)

//輸入表

void

print

(sqlist *a)

//輸出表

直接訪問指定位置即可

elemtype getelm

(sqlist *a,

int loc)

//訪問表中的值

插入值時,先將指定位置的後繼全部後移一位,注意這裡我用了倒序遍歷,可以防止覆蓋

void

insert

(sqlist *a,

int loc,elemtype n)

//插入

for(

int i = a-

>len;i >= loc;i--

)//後繼後移

a->data[i]

= a-

>data[i -1]

; a-

>data[loc -1]

= n;

//插入到指定位置

(a->len)++;

//長度加一

}

刪除值時,只用將指定位置的後繼向前移動一位即可,後繼會自動覆蓋指定位置的值

void

delete

(sqlist *a,

int loc)

//刪除

for(

int i = loc -

1;i < a-

>len -1;

++i)

//後繼前移,自動覆蓋loc上的值

a->data[i]

= a-

>data[i +1]

;(a-

>len)--;

//長度減一

}

合併表只用將需合併的表中的值一一連線在被合併表後面即可

void

combine

(sqlist *a,sqlist *b)

//合併

/*線性表順序結構

*van_fantasy

*///標頭檔案以及常量定義

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define eps 1e-6

#define inf 0x3f3f3f3f

#define pi acos(-1.0)

#define m 1000000007

using

namespace std;

typedef

long

long ll;

const

int maxn =

1e5+6;

typedef

int elemtype;

//本程式以儲存整形變數的線性表為例進行討論

typedef

struct

sqlist;

//定義乙個線性表,data中存值,len為表長

elemtype getelm

(sqlist *a,

int loc)

//訪問表中的值

void

input

(sqlist *a)

//輸入表

void

insert

(sqlist *a,

int loc,elemtype n)

//插入

for(

int i = a-

>len;i >= loc;i--

)//後繼後移

a->data[i]

= a-

>data[i -1]

; a-

>data[loc -1]

= n;

//插入到指定位置

(a->len)++;

//長度加一

}void

delete

(sqlist *a,

int loc)

//刪除

for(

int i = loc -

1;i < a-

>len -1;

++i)

//後繼前移,自動覆蓋loc上的值

a->data[i]

= a-

>data[i +1]

;(a-

>len)--;

//長度減一

}void

combine

(sqlist *a,sqlist *b)

//合併

bool

cmp(elemtype x,elemtype y)

//排序演算法以公升序為例

void

sort

(sqlist *a)

//排序

void

print

(sqlist *a)

//輸出表

intmain()

//主函式

else

if(sw ==1)

input

(&a)

;else

if(sw ==2)

else

if(sw ==3)

else

if(sw ==4)

else

if(sw ==5)

else

if(sw ==6)

sort

(&a)

;else

if(sw ==7)

print

(&a)

;else

break

;printf

("\n線性表順序結構基操:\n1.輸入表\n2.查值\n3.插入值\n4.刪除值\n5.合併表\n6.排序\n7.輸出表\n8.退出\n請輸入操作選項: ");

}return0;

}

順序結構儲存相對於鏈式結構,優點是理解起來比較容易,因為它是基於陣列的。缺點是操作時時間複雜度較高。

C C 線性表順序儲存

大二下學期,終於開始學資料結構了。對c和c 的知識掌握爛的一塌糊塗,但從線性表開始慢慢實現吧,這也是對c語言的熟悉與掌握 使用前需要在d盤根目錄建立data與data1為名的文件,輸入整形資料,以空格隔開 開始的選擇2 輸入陣列 只支援五個資料元素輸入。具體實現了線性表的初始化,元素位置返回,元素插...

順序儲存線性表實現

在計算機中用一組位址連續的儲存單元依次儲存線性表的各個資料元素,稱作線性表的順序儲存結構。順序儲存結構的主要優點是節省儲存空間,因為分配給資料的儲存單元全用存放結點的資料 不考慮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...