C語言靜態順序表分析

2021-08-20 23:31:23 字數 3839 閱讀 9463

順序表是一種可以按元素序號隨機訪問元素的一種儲存結構。比較簡單,但是插入和刪除操作較為複雜。

以下是我們要實現的介面:

#ifndef __seqlist_h__

#define __seqlist_h__

#include#include#include#define max 100

typedef int datatype;

typedef struct seqlist

seqlist,*pseqlist;

//初始化

void initseqlist(pseqlist pseq);

//尾部插入

void pushback(pseqlist pseq, datatype d);

//尾部刪除

void popback(pseqlist pseq);

//頭部插入

void pushfront(pseqlist pseq, datatype d);

//頭部刪除

void popfront(pseqlist pseq);

//查詢指定元素

int find(pseqlist pseq, datatype d);

//指定位置插入

void insert(pseqlist pseq, int pos, datatype d);

//刪除指定位置元素

void erase(pseqlist pseq, int pos);

//刪除指定元素

void remove(pseqlist pseq, datatype d);

//刪除所有的指定元素

void removeall(pseqlist pseq, datatype d);

//返回順序表的大小

int size(pseqlist pseq);

//判斷順序表是否為空

int empty(pseqlist pseq);

//氣泡排序

void bubblesort(pseqlist pseq);

//選擇排序

void selectsort(pseqlist pseq);

//選擇排序的優化

void selectsortop(pseqlist pseq);

//二分查詢

int binarysearch(pseqlist pseq, datatype d);

//二分查詢遞迴寫法

int binarysearch_r(pseqlist pseq, int left, int right, datatype d);

//列印

void printseqlist(pseqlist pseq);

#endif //__seqlist_h__

實現主函式及測試介面:

#define _crt_secure_no_warnings 1

#include "seqlist.h"

void testpushback()

void testpushfront()

void testfind()

void testinsert_erase()

void testsize_empty()

void testsort()

int main()

再分部實現子函式:

#define _crt_secure_no_warnings 1

#include"seqlist.h"

void initseqlist(pseqlist pseq)//初始化

void pushback(pseqlist pseq, datatype d)//尾部插入

pseq->data[pseq->sz] = d;

pseq->sz++;

}void popback(pseqlist pseq)//尾部刪除

pseq->sz--;

}void pushfront(pseqlist pseq, datatype d)//頭部插入

int i = 0;

for (i = pseq->sz-1; i >= 0; i--)

pseq->data[0] = d;

pseq->sz++;

}void popfront(pseqlist pseq)//頭部刪除

int i = 0;

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

pseq->sz--;

}int find(pseqlist pseq, datatype d)//查詢指定元素

int i = 0;

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

return -1;

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

int i = 0;

for (i = pseq->sz - 1; i >= pos; i--)

pseq->data[pos] = d;

pseq->sz++;

}void erase(pseqlist pseq, int pos)//刪除指定位置元素

int i = 0;

for (i = pos; i < pseq->sz - 1; i++)

pseq->sz--;

}void remove(pseqlist pseq, datatype d)//刪除指定元素

int i = 0;

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

pseq->sz--;

return;

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

int i = 0;

int count = 0;

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

} pseq->sz = count;

}int size(pseqlist pseq)//返回順序表的大小

int empty(pseqlist pseq)//判斷順序表是否為空

else if (pseq->sz > 0)

return 1;

}void bubblesort(pseqlist pseq) //氣泡排序

} if (flag == 0)

}}void selectsort(pseqlist pseq)//選擇排序

if (max != pseq->sz - 1 - i)

}}void selectsortop(pseqlist pseq)//選擇排序的優化

if (max != end)

end--;

if (max == min)

min = max;

if (min != start)

start++; }}

int binarysearch(pseqlist pseq, datatype d)//二分查詢

else if (pseq->data[mid] < d)

else

return mid;

} return -1;

}int binarysearch_r(pseqlist pseq, int left, int right, datatype d)//二分查詢遞迴寫法

void printseqlist(pseqlist pseq)//列印

printf("\n");

}

靜態順序表就實現啦!

c語言實現靜態順序表

標頭檔案如下 ifndef s l define s l include include include pragma warning disable 4996 define max size 10 typedef int datatype typedef struct seqlist seqlis...

靜態順序表的實現(C語言)

先來了解一下什麼是順序表。順序表是在計算機記憶體中以 陣列的形式儲存的線性表,是指用一組位址連續的 儲存單元 依次儲存 資料元素 的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組位址連續的儲存單元中。來看一下什麼是連續儲存 像a b c d 這...

C語言實現靜態順序表

靜態順序表是儲存在乙個連續的陣列中的,因此對其資料型別有乙個結構體宣告。尾插 void seqpushback seqlist pseq,datatype x pseq a pseq size x 尾刪 void seqpopback seqlist pseq 頭插 void seqpushfron...