順序表 用c語言簡單實現順序表

2021-07-27 09:53:21 字數 3146 閱讀 6821

test.h

#ifndef __seplist_h__

#define __seplist_h__

#include

#include

#include

#include

//#define max 100

#define default_sz 3 //當前預設有效值

#define isc_sz 2 //動態分配預設增長個數

typedef int datatype;

typedef struct seqlist

seqlist,*pseqlist;

void initseqlist(pseqlist plist);//初始化順序表

void pushback(pseqlist plist,datatype d);//從尾部插入資料

void popback(pseqlist plist);//從尾部刪除資料

void pushfront(pseqlist plist,datatype d);//從頭部插入資料

void popfront(pseqlist plist);//從頭部刪除資料

int find(pseqlist plist, datatype d);//查詢指定數

void remove(pseqlist plist, datatype d);//指定元素刪除

void removeall(pseqlist plist, datatype d);//刪除指定的所有元素

void show(pseqlist plist);//列印順序表

void bubblesort(pseqlist plist);//氣泡排序

int binarysearch(pseqlist plist, datatype d);//非遞迴實現二分查詢

int printsearch(pseqlist plist, int left, int right, datatype d);//遞迴實現二分查詢

void insert(pseqlist plist, int pos, datatype d);//指定位置插入

void reverselist(pseqlist plist);//反向旋轉

void destroyseqlist(pseqlist plist);//清空動態順序表

void checkseqlist(pseqlist plist);//判斷動態順的序表的空間是否已滿,滿的話進行擴容

#endif

list.c

#include"test.h"

void

checkseqlist(pseqlist plist)

plist->data= tmp;

plist->capatity += isc_sz;

}}void

initseqlist(pseqlist plist)

plist->sz = 0;

plist->capatity = 0;

memset(plist->data, 0, sizeof(pseqlist)*default_sz);

}void

pushback(pseqlist plist,datatype d)

*/ plist->data[plist->sz] = d;

plist->sz++;

}void

popback(pseqlist plist)

plist->data[plist->sz - 1] = 0;

plist->sz--;

}void

pushfront(pseqlist plist,datatype d)

*/ checkseqlist(plist);

for (i = plist->sz; i > 0; i--)

plist->data[0] = d;

plist->sz++;

}void

popfront(pseqlist plist)

for (i = 0; i < plist->sz - 1; i++)

plist->sz--;

}void

show(pseqlist plist)

}int

find(pseqlist plist, datatype d)

return -1;

}void

remove(pseqlist plist, datatype d)

plist->sz--;

}}void

removeall(pseqlist plist, datatype d)

plist->sz--;

pos = find(plist, d);

}}void

bubblesort(pseqlist plist)}}

}int

binarysearch(pseqlist plist, datatype d)

else

if (plist->data[mid] < d)

else

if (plist->data[mid] == d)

}return -1;

}void

insert(pseqlist plist, int pos, datatype d)

plist->data[pos] = d;

}void

reverselist(pseqlist plist)

}void

destroyseqlist(pseqlist plist)

int printsearch(pseqlist plist, int left, int right, datatype d)

else

if (plist->data[mid] < d)

else

if (plist->data[mid] == d)

}return -1;

}

test.c

#include"test.h"

extern

struct seqlist sz;

void test1()

void test2()

int main()

用C 實現簡單的順序表

這周課後練習是實現老師上課的時候講的順序表的一些基本操作。我們用的是c語言的教材,但之前學計算機語言的時候學的是c 雖然大家都說差不多,但對c語言的一些用法不太熟悉,還是嘗試著用c 的語言來編寫。如下 includeusing namespace std int y struct mylist vo...

用C 實現順序表

seqlist.h include include using namespace std typedef int datatype class seqlist delete array array null array newarray capacity 2 capacity private da...

C語言順序表的簡單實現

插入元素 刪除元素 定位元素 include include define maxsize 1024 線性表的最大長度 typedef structsqlist,sqlink 說明標示符 void createlist sqlink l 創空表 void clearlist sqlink l 置空表...