線性表的順序表示與實現 C語言版

2021-09-25 09:58:18 字數 1793 閱讀 3080

線性表的順序表示與實現(c語言版)

本例為純c語言實現, 無c++部分

// 本例為純c語言實現,所用編譯器為c編譯器,非c++編譯器

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

#include#include#define list_init_size 100 //線性表儲存空間初始分配量

#define list_increment 10 //線性表儲存空間的分配增量

typedef struct _sqlistsqlist;

int initlist(sqlist* l);

int insertlistelem(sqlist* l, int i, int e);

int deletelistelem(sqlist* l, int i, int* e);

int mergelist(sqlist la, sqlist lb, sqlist* lc);

int main()

printf("線性表l為: \n");

for(i=0;ilength;i++)

printf("\n");

printf("線性表la為: \n");

for(i=0;ilength;i++)

printf("\n");

printf("\n");

// 合併線性表

if( mergelist(la, lb, &lc) )

l->length = 0;

l->listsize = list_init_size;

return 1;

} int insertlistelem(sqlist* l, int i, int e)

if(l->length>=l->listsize)

l->elem = newbase; // 將新的儲存空間基址給l.elem

l->listsize += list_increment; // 更新儲存空間容量

} int* q = &l->elem[i-1]; // 指標q指向元素e要插入的位置

int* p;

for( p=&l->elem[l->length-1]; p>=q; p--)

*q = e; // 將元素e插入線性表

++l->length;

return 1;

}int deletelistelem(sqlist* l, int i, int* e)

int* q = &l->elem[i-1]; // 指標q指向要刪除的元素

int* p = l->elem + l->length-1; // 指標p指向最後乙個元素

*e = *q; // 將要刪除的元素賦值給指標e所指向的位址

for(; qlength;

return 1;

} int mergelist(sqlist la, sqlist lb, sqlist* lc)

qc = lc->elem;

// 線性表a和b的尾位址

int* pa = la.elem + la.length - 1;

int* pb = lb.elem + lb.length - 1;

// 將線性表a中的元素和b中的元素插入c

while(qa<=pa && qb<=pb)

else

} while(qa<=pa)

while(qb<=pb)

return 1;

} ​

線性表c語言版

定義 線性表 零個或多個資料元素的有限序列。首先,他是乙個序列,元素之間是有順序的,若存在多個元素,則第乙個無前驅,最後乙個無後繼,其他元素每個元素都有且只有乙個前驅和後繼。然後,線性表強調是有限的,元素的個數是有限的。線性表元素的個數n n 0 定義為線性表的長度,當n 0時,稱為空表。在複雜的線...

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

一.順序表的定義 用一組位址連續的儲存單元依次存放線性表的結點,由此得到的線性表簡稱為順序表 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...