線性表的順序表示與實現(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...