使用動態陣列
標頭檔案: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固定以外,後面跟的引數的...
可變長引數
可變長引數 指的是在呼叫函式時,傳入的引數個數可以不固定 呼叫函式時,傳值的方式無非兩種,一種是位置實參,另一種是關鍵字實參,因此形參也必須得有兩種解決方法,以此來分別接收溢位的位置實參 與關鍵字實參 形參中的會將溢位的位置實參全部接收,然後儲存元組的形式,然後把元組賦值給後的引數。需要注意的是 後...