靜態和動態順序表的實現(c語言)

2021-07-12 06:15:19 字數 3739 閱讀 4596

(一)靜態順序表的實現

seqlist.h檔案

#pragma once

#define max_size 1000

typedef int datatype;

typedef unsigned int size_t;

typedef struct seqlist

seqlist;

void initseqlist(seqlist* pseq);

void pushback(seqlist* pseq, datatype x);

void popback(seqlist* pseq);

void pushfront(seqlist* pseq, datatype x);

void popfront(seqlist* pseq);

void insert(seqlist* pseq, size_t pos, datatype x);

int find(seqlist* pseq, datatype x);

void erase(seqlist* pseq, size_t x);

int remove(seqlist* pseq, datatype x);

int removeall(seqlist* pseq, datatype x);

void bubblesort(seqlist* pseq);

void selectsort(seqlist* pseq);

int binarysearch(seqlist* pseq, datatype x);

void printseqlist(seqlist* pseq);

seqlist.c檔案

#include "seqlist.h"

#include #include #include void initseqlist(seqlist* pseq)

////1.檢查引數

//2.檢查邊界條件

//3.實現函式功能

//void pushback(seqlist* pseq,datatype x)

else }

void popback(seqlist* pseq)

else }

void pushfront(seqlist* pseq, datatype x)

pseq ->array[0] = x;

pseq ->size++;

}void popfront(seqlist* pseq)

pseq ->array[pseq->size - 1] = 0;

pseq ->size--;

}void insert(seqlist* pseq, size_t pos, datatype x)

pseq ->array[pos] = x;

pseq ->size++;

}int find(seqlist* pseq, datatype x)

i--;

} return -1;

}void erase(seqlist* pseq, size_t x) //將第幾個數刪除 0始 

pseq->size--;

}int remove(seqlist* pseq, datatype x)

i++;

} return -1;

}int removeall(seqlist* pseq, datatype x)

else

i++;

} pseq->size -= count;

return count;

}void bubblesort(seqlist* pseq)

}}void selectsort(seqlist* pseq)//一次選出最大最小的資料分別放在序列兩邊

int binarysearch(seqlist* pseq, datatype x)

else if(x > pseq->array[mid])

else

return mid;

mid = left + (right - left) / 2;

} return -1;

}void printseqlist(seqlist* pseq)

}

text.c檔案

#include "seqlist.h"

#include #include void test1()

void test2()

void test3()

void test4()

else }

void test5()

void test6()

printseqlist(&seq);

}void test7()

printseqlist(&seq);

}void test8()

void test9()

int main()

(二)動態順序表的實現(簡略:只有部分主要功能)

seqlist_d.h檔案

#pragma once

typedef int datatype;

typedef unsigned size_t;

typedef struct seqlist_d

seqlist_d;

void initseqlist_d(seqlist_d* pseq_d);

int isfullcapacity(seqlist_d* pseq_d);

int isemptycapacity(seqlist_d* pseq_d);

void pushback(seqlist_d* pseq_d,datatype data);

void popback(seqlist_d* pseq_d);

void printseq(seqlist_d* pseq_d);  

seqlist_d.c

#include "seqlist_d.h"

#include #include #include void initseqlist_d(seqlist_d* pseq_d)

void pushback(seqlist_d* pseq_d,datatype data)

pseq_d->array[pseq_d->size++] = data;

}int isfullcapacity(seqlist_d* pseq_d)

else }

int isemptycapacity(seqlist_d* pseq_d)

else

return 0;

}void popback(seqlist_d* pseq_d)

else }

void printseq(seqlist_d* pseq_d)

}

test.c 檔案

#include #include #include "seqlist_d.h"

void text1()

int main()

{ text1();

system("pause");

return 0;

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

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

C語言動態實現順序表

順序表的動態儲存結構 typedef int datatype typedef struct seqlistd seqlistd,pseqlistd 部分函式操作 void initseqlistd pseqlistd pseq 初始化 void checkcapacity pseqlistd ps...

C語言動態順序表的實現

上一次我們實現了靜態順序表,靜態順序表的大小固定,不方便我們去訪問資料。而動態順序表就可以很方便的訪問資料。同樣,我們有以下介面要實現 ifndef seqlist h define seqlist h include include include include define max 3 typ...