#include
#include
//需求,寫乙個順序線性表,儲存乙個位址位置
#define list_init_size 100 //線性表儲存空間的初始分配量
#define listincrement 10 //線性表儲存空間的分配增量
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
typedef int status; //函式結果狀態碼
typedef structpoint2d;
typedef structsqlist;
//初始化順序表
status initlist(sqlist * l)
//申請成功之後,長度設定為0
l->length=0;
l->listsize=list_init_size;
return ok;
}//插入元素(向順序表中插入的第i個位置之前插入資料p)
status listinsert(sqlist * l,int i,point2d p)
if(l->length>=l->listsize)
//分配成功
l->element=p; //新基址
l->listsize+=listincrement;
}//如果都是合法的則將資料給插入進來,將第i個位置和之後的元素向後移動乙個位置
for(j=l->length-1;j>=i-1;j--)
//再i-1空間上寫資料
l->element[i-1]=p;
//將長度加1
l->length++;
return ok;
}//合併順序列表(將l1和l2中的元素給合併到l3中) l3必須在外面就進行分配記憶體空間
void mergelist(sqlist l1,sqlist l2,sqlist *l3)
l1_start=l1.element;
l2_start=l2.element;
l1_last=l1.element+l1.length-1;
l2_last=l2.element+l2.length-1;
while(l1_start<=l1_last&&l2_start<=l2_last)else if(l1_start->xx)else
}while(l1_start<=l1_last)
while(l2_start<=l2_last)
}//測試
int main();
//初始化乙個指向結構體的指標
//該結構體分配一塊空間用來儲存陣列的首位址,陣列的長度,陣列的最大容量
sqlist * l=(sqlist*)malloc(sizeof(sqlist));
i=initlist(l);
if(i==ok)
i=listinsert(l,1,p);
if(i==ok)
i=listinsert(l,2,p);
//列印插入的資料元素
printf("資料x為%d,資料y為:%d,順序表的長度為%d",l->element[0].x,l->element[0].y,l->length);
printf("hello world");
printf("新建立乙個順序列表的集合");
mergelist(*l,*l,l1);
printf("合併後的順序表的長度為%d,總容量為%d\n",l1->length,l1->listsize);
while(l1->element->x)
scanf("%d",&i);
}
資料結構 順序表(C語言實現)
順序表的定義是 把線性表中所有表項按照其邏輯順序依次儲存到從計算機儲存中指定儲存位置開始的一塊連續的儲存空間中。這樣,線性表中第乙個表項的儲存位置就是被指定的儲存位置,第i個表項 2 i n 的儲存位置緊接在第i 1個表項的儲存位置的後面。假設順序表中每個表項的資料型別為t,則每個表項所占用儲存空間...
資料結構 順序表(C語言實現)
順序表是用一段實體地址連續的儲存單元依次儲存資料元素的線性結構,一般情況下採用陣列儲存。在陣列上完成資料的增刪查改。順序表一般可以分為靜態順序表 使用定長陣列儲存 和動態順序表 使用動態開闢的陣列儲存 本次實現的是動態順序表,具體 如下 common.h include include includ...
資料結構順序表(C語言實現)
標頭檔案和函式申明 include include include typedef struct arr 定義了乙個資料型別,該資料型別的名字叫做struct arr,該資料型別含有三個成員pbase,len,cnt arr void init arr arr parr,int length arr...