動態順序表的實現

2021-08-17 05:52:05 字數 3383 閱讀 3971

寫這篇部落格主要是講述一下動態順序表的實現,其中包含 列印、建立、銷毀、尾部插入、尾部刪除、頭部插入、頭部刪除、在順序表的pos位置上插入元素x、刪除順序表pos位置上的元素、順序表中查詢資料x,返回該元素在順序表中的位置、修改pos位置的資料、氣泡排序、選擇排序、查詢已排序順序表中的元素x  等操作。

話不多說,我們直接上**:

pseq.h

#define  _crt_secure_no_warnings 1

#include #include #include #includetypedef int datatype;

typedef struct seqlist

seqlist;

void seqprint(seqlist* pseq);//列印

void seqinit(seqlist* pseq);//建立

void seqdestory(seqlist* pseq);//銷毀

void seqpushback(seqlist* pseq, datatype x);//尾部插入

void seqpopback(seqlist* pseq);//尾部刪除

void seqpushfront(seqlist* pseq, datatype x);//頭部插入

void seqpopfront(seqlist* pseq);//頭部刪除

void seqinsert(seqlist* pseq, size_t pos, datatype x);//在順序表的pos位置上插入元素x

void seqerase(seqlist* pseq, size_t pos);//刪除順序表pos位置上的元素

int seqfind(seqlist* pseq, datatype x);//順序表中查詢資料x,返回該元素在順序表中的位置

void seqat(seqlist* pseq, size_t pos, datatype x); //修改pos位置的資料

void bubblesort(seqlist* pseq);//氣泡排序

void selectsort(seqlist* pseq);//選擇排序

int binarysearch(seqlist* pseq, datatype x);//查詢已排序順序表中的元素x

pseq.c

#define  _crt_secure_no_warnings 1

#include #include #include #includetypedef int datatype;

typedef struct seqlist

seqlist, *pseqlist;

void seqprint(seqlist* pseq)//列印

printf("\n");

}void seqinit(seqlist* pseq)//建立

}void seqdestory(seqlist* pseq)//銷毀

pseq->_capacity = 0;

}void seqpushback(seqlist* pseq, datatype x)//尾部插入

assert(pseq != null);

pseq->_a[pseq->_size] = x;

pseq->_size++;

}void seqpopback(seqlist* pseq)//尾部刪除

pseq->_size--;

}void seqpushfront(seqlist* pseq, datatype x)//頭部插入

pseq->_a[0] = x;

}void seqpopfront(seqlist* pseq)//頭部刪除

int i = 0;

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

pseq->_size--;

}void seqinsert(seqlist* pseq, size_t pos, datatype x)//在順序表的pos位置上插入元素x

pseq->_size++;

int i = 0;

for (i = pseq->_size; i > pos; i--)

pseq->_a[pos] = x;

}void seqerase(seqlist* pseq, size_t pos)//刪除順序表pos位置上的元素

int i = 0;

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

pseq->_size--;

}int seqfind(seqlist* pseq, datatype x)//順序表中查詢資料x,返回該元素在順序表中的位置

int i = 0;

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

}void seqat(seqlist* pseq, size_t pos, datatype x)//修改pos位置的資料

pseq->_a[pos] = x;

}void bubblesort(seqlist* pseq)//氣泡排序

int j = 0;

int i = 0;

int temp = 0;

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

}void selectsort(seqlist* pseq)//選擇排序

int j = 0;//控制有序數列的排序

int i = 0;//控制無序數列比較出最大值

int min = 0;

int temp = 0;

for (i = 0; i < pseq->_size ; i++)    //控制有序數列的排序}}

}int binarysearch(seqlist* pseq, datatype x)//查詢已排序順序表中的元素x

int i = 0;

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

return -1;

}test.c

#include "pseq.h"

void test1()

void test2()

void test3()

else

seqprint(&seqlist);

seqerase(&seqlist, 2);

seqprint(&seqlist);

seqat(&seqlist, 2, 9);

seqprint(&seqlist);

seqdestory(&seqlist);

}void test4()

int main()

測試結果:

動態實現順序表

順序表是在計算機記憶體中以 陣列的形式儲存的線性表,是指用一組位址連續的 儲存單元 依次儲存 資料元素 的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組位址連續的 儲存單元中。下面來進行順序表的動態實現 標頭檔案 ifndef seqlist ...

實現動態順序表

標頭檔案seqlist.h中 pragma once include include typedef int datatype typedef struct seqlist seqlist 列印順序表 void printseqlist seqlist pseq printf n 增大容量 void...

實現動態順序表

靜態順序表和動態順序表之間的區別就是靜態順序表的儲存大小一旦設定好之後便不能修改 顯然動態順序表採用的是動態分配記憶體,容量是可以增加的,當然動態順序表要比靜態順序表多增加乙個監測容量的引數,每當當前容量存滿的時候就要觸發擴容機制,實現動態開闢記憶體。由於兩者差別不是很大,這裡我就只實現動態順序表,...