可變長順序表

2021-08-21 06:22:57 字數 1646 閱讀 9250

使用動態陣列

標頭檔案:seqlist.h

#include

#include

#define list_intt_size 100 //線性表儲存空間的初始化分配量

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

typedef int datatype; //儲存單元型別

typedef struct

sqlist;

//建立順序表

sqlist createsqlist()

//初始化順序表

//返回1表示初始化成功

//返回0表示初始化失敗

int initatesqlist(sqlist* l)

//插入函式

int insertsqlist(sqlist* l,int i,datatype d)

if(l->length == l->listsize) //當前儲存空間已滿,增加分配

l->elem = newbase; //新基址

l->listsize += listincrement; //增加容量

printf("分配空間成功!");

}for(j = l->length;j>i;j++)

l->elem[j] = l->elem[j-1];

l->elem[i] = d; //插入d

l->length++; //元素個數加1

return 1;

}//刪除函式

int deletesqlist(sqlist* l,int i,datatype *d)

else if(i<0 || i>l->length)

else

}//取資料元素

int getsqlist(sqlist l,int i,datatype *d)

else

}//求資料元素個數

int countsqlist(sqlist* l)

{int i;

int count = 0;

for(i=0;i<=l->length;i++)

count++;

return count;

//測試函式

#include"seqlist.h"

int main()

int i,d,count;

seqlist list = createsqlist();

initatesqlist(&list);

for(i = 0;i<300;i++)

insertsqlist(&list;i,i+1);

printf("\n");

deletesqlist(&list,100,&d);

for(i = 0;i<200;i++)

printf("%d\t",list.elem[i]);

if((i+1)%5 == 0)

printf("\n");

printf("測試行*********************");

getsqlist(list,99,&d);

printf("%d\n",d);

count = countsqlist(&list);

printf("%d\n",count);

return 0;

可變長順序棧

棧 stack 大家一定不陌生,限定僅在表尾進行插入和刪除操作的線性表。理解棧,首先要理解棧是線性表的特例,只是操作受限制了 棧的順序儲存結構也是線性表順序儲存的簡化,對於棧這一種只能一頭插入刪除的線性表來說,我們可以用陣列實現它,但是陣列的大小是給定的,如果你想儲存的元素個數多於陣列的個數,這時候...

可變長引數

由於在c語言中沒有函式過載,解決不定數目函式引數問題變得比較麻煩,即使採用c 如果引數個數不能確定,也很難採用函式過載。對這種情況,提出了指標引數來解決問題。如printf 函式,其原型為 int printf const char format,它除了有乙個引數format固定以外,後面跟的引數的...

可變長引數

可變長引數 指的是在呼叫函式時,傳入的引數個數可以不固定 呼叫函式時,傳值的方式無非兩種,一種是位置實參,另一種是關鍵字實參,因此形參也必須得有兩種解決方法,以此來分別接收溢位的位置實參 與關鍵字實參 形參中的會將溢位的位置實參全部接收,然後儲存元組的形式,然後把元組賦值給後的引數。需要注意的是 後...