C語言線性表的順序表示與實現例項詳解

2022-10-03 18:30:14 字數 1953 閱讀 7960

1.概述

通常來說順序表是在計算機的記憶體中以陣列的形式儲存的線性表,是用一組位址連續的儲存單元依次儲存資料元素的線性資料結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組位址連續的儲存單元中。

將表中元素乙個接乙個的存入一組連續的儲存單元中,這種儲存結構就是順序結構。

採用順序儲存結構的線性表簡稱為「 順序表」。順序表的儲存特點是:只要確定了起始位置,表中任一元素的位址都通過下列公式得到:loc(ai)=loc(a1)+(i-1)*l  1≤i≤n 其中,l是元素占用儲存單元的長度。如順序表的每個結點占用len個記憶體單元,用location (ki)表示順序表中第i個結點ki所佔記憶體空間的第1個單元的位址。則有如下的關係:location (ki+1) = location (ki) +len

location (ki) = location(k1) + (i-1)len

儲存結構要體現資料的邏輯結構,順序表的儲存結構中,記憶體中實體地址相鄰的結點一定具有順序表中的邏輯關係。

2.基本操作

/* c2-1.h 線性表的動態分配順序儲存結構 */

#define list_init_size 10 /* 線性表儲存空間的初始分配量 */

#define listincrement 2 /* 線性表儲存空間的分配增量 */

typedef struct

sqlist;

/* bo2-1.c 順序表示的線性表(儲存結構由c2-1.h定義)的基本操作(12個) */

status initlist(sqlist *l) /* 演算法2.3 */

status destroylist(sqlist *l)

status clearlist(sqlist *l)

status listempty(sqlist l)

int listlength(sqlist l)

status getelem(sqlist l,int i,elemtype *e)

int locateelem(sqlist l,elemtype e,status(*compare)(elemtype,elemtype))

status priorelem(sqlist l,elemtype cur_e,elemtype *pre_e)

if(i>l.length)

return infeasible;

else

}status nextelem(sqlist l,elemtype cur_e,elemtype *next_e)

q=(*l).elem+i-1; /* q為插入位置 */

for(p=(*l).elem+(*l).length-1;p>=q;--p) /* 插入位置及之後的元素右移 */

*(p+1)=*p;

*q=e; /* 插入e */

++(*l).length; /* 表長增1 */

return ok;

} status listdelete(sqlist *l,int i,elemtype *e) /* 演算法2.5 */

status listtr**erse(sqlist l,void(*vi)(elemtype*))

/* algo2-1.c 實現演算法2.1的程式 */

#include"c1.h"

typedef int elemtype;

#include"c2-1.h" /* 採用線性表的動態分配順序儲存結構 */

#include"bo2-1.c" /* 可以使用bo2-1.c中的基本操作 */

status equal(elemtype c1,elemtype c2)

void union(sqlist *la,sqlist lb) /* 演算法2.1 */ }

void print(elemtype *c)

int main()

本文標題: c語言線性表的順序表示與實現例項詳解

本文位址:

線性表的順序表示與實現 順序表

一.順序表的定義 用一組位址連續的儲存單元依次存放線性表的結點,由此得到的線性表簡稱為順序表 sequential list 二.結點ai的儲存位址 假設表中每個結點占用c個儲存單元,其中第乙個單元的儲存位址作為該結點的儲存位址,並設表中開始結點a1的儲存位址 簡稱為基位址 是loc a1 那麼結點...

線性表的順序表示與實現

include include include define true 1 define false 0 define ok 1 define error 0 define infeasible 1 define overflow 2 typedef int status typedef int e...

線性表的順序表示與實現

線性表是有n個元素的非空有限序列 存在惟一的乙個被稱作 第乙個 資料的元素 存在惟一的乙個被稱作 第後乙個 資料的元素 除第乙個與最後乙個之外,其它元素都存在唯一的乙個前驅和唯一的乙個後續 複雜的線性表中的元素可以由多個資料項組成 同乙個線性表中的元素型別必須相同 線性表的順序表,是用一組位址連續的...