因為線性表的順序儲存結構是一種隨機訪問的儲存結構,同時線性表的長度可變,且所需最大儲存空間隨問題不同而不同,則在c語言中,用動態分配的一維陣列來實現。
下面是線性表的動態分配順序儲存結構:
typedef struct
sqlist;
該程式採用選單和結構體陣列,這樣方便測試每個功能的實現。同時將類c**轉換成c語言源**,並執行程式。
功能包括:初始化,建立,顯示,插入,刪除,查詢。
/**
2016/09/28
1.alt+f8:格式化**塊
*///預編譯命令
#include#include#define ok 1
#define error 0
#define overflow -2
#define list_init_size 10 //表儲存空間的初始分配量
#define listincrement 2 // 線性表儲存空間的分配增量
//資料結構
typedef int status;
typedef int elemtype;
typedef struct
sqlist;
//函式宣告
int menu_select();
status initlist_sq(sqlist &l);
status creatlist_sq(sqlist &l,int n);
void printlist_sq(sqlist l);
status listinsert_sq(sqlist &l, int i, elemtype e);
status listdelete_sq(sqlist &l, int i, elemtype &e);
int locateelem_sq(sqlist l, elemtype e, status (*compare)(elemtype, elemtype));
status equal(elemtype x, elemtype y);
// status greater(elemtype x, elemtype y);
// status less(elemtype x, elemtype y);
//主函式
void main() }}
//選單函式
int menu_select()
return sn;
}//初始化函式
status initlist_sq(sqlist &l)
//建立線性表
status creatlist_sq(sqlist &l,int n)
l.length=n;
return ok;
}//輸出函式
void printlist_sq(sqlist l)
printf("\n");
}//插入函式定義
status listinsert_sq(sqlist &l, int i, elemtype e)
q=&l.elem[i-1];
for(p=&l.elem[l.length-1];p>=q;p--)
*q=e;
l.length++;
return ok;
}//刪除函式定義
status listdelete_sq(sqlist &l, int i, elemtype &e)
//查詢函式定義
int locateelem_sq(sqlist l, elemtype e, status (*compare)(elemtype, elemtype))
//指向函式型別的指標作形參
//equal函式:判斷兩個資料元素是否相等的函式
//為locateelem_sq函式準備第三個實參
status equal(elemtype x, elemtype y)
線性表 陣列實現
include include includeusing namespace std define ms a memset a,0,sizeof a define maxlength 100 線性表陣列實現,定義乙個具有兩個域結構體,陣列下標為0的地方不存放元素,可以使位置i對應整數i 第乙個域是陣...
線性表陣列實現
線性表 順序表示 用陣列實現,比較簡單 線性表的順序表示指的是用一組位址連續的儲存單元一次儲存線性表的資料元素,在高階語言程式設計中,陣列具有隨機訪問的特性,因此通常都用陣列來描述資料結構中的順序儲存結構,對於線性表,可以用一維陣列來實現 1 順序表的初始化 定義乙個object型別的陣列,可儲存任...
線性表之陣列
一,線性表的概念以及數學定義 1.線性表的概念 零個或多個資料元素的有限序列。首先說明這是乙個序列,也就是說資料元素之間是有順序的,若元素存在多個,則第乙個元素無前驅,最後乙個元素無後繼,其他每個元素都有且僅有乙個前驅和後繼。2.數學定義 若將線性表記為 a1.ai 1,ai,ai 1.an 則線性...