C語言 動態順序表的增刪查改,資料結構

2021-07-25 07:15:19 字數 3804 閱讀 7568

順序表是在計算機記憶體中以陣列的形式儲存的線性表,是指用一組位址連續的儲存單元依次儲存資料元素的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組位址連續的儲存單元中。

是處理資料結構的一種簡單的方法。

動態順序結構與靜態順序結構之間的區別在於,動態順序結構能夠根據情況在記憶體池中申請空間。

seqlist.h

#ifndef __seqlist_h__

#define __seqlist_h__

#define _crt_secure_no_warnings 10

#include

#include

#include

#include

typedef int datatype;

typedef struct seqlist

seqlist;

void checkcapacity(seqlist *seq);//檢查空間是否夠大

void initseqlist(seqlist* seq);//初始化順序表

void destoryseqlist(seqlist* seq);//銷毀順序表

void pushback(seqlist* seq, datatype x);//從尾部插入元素

void popback(seqlist* seq);//從尾部刪除元素

void pushfront(seqlist* seq, datatype x);//從頭部插入元素

void popfront(seqlist* seq);//從頭部刪除元素

void insert(seqlist* seq, size_t pos, datatype x);//指定位置插入元素

int find(seqlist* seq, datatype x);// 尋找元素

void erase(seqlist* seq, size_t pos);// 刪除指定位置元素

void remove(seqlist* seq, datatype x);//刪除元素x

void removeall(seqlist* seq, datatype x);//刪除順序表中所有的x

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

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

void insertsort(seqlist* seq);//插入排序

int binarysearch(seqlist* seq, datatype x);//二分查詢

int binarysearchd(seqlist* seq, size_t begin, size_t end, datatype x);//遞迴,二分查詢

void printseqlist(seqlist* seq);//輸入順序表

#endif//__seqlist_h__

seqlist.c

#include"seqlist.h"

void checkcapacity(seqlist *seq)//檢查是否需要擴容

}void initseqlist(seqlist* seq)//初始化順序表

void destoryseqlist(seqlist* seq)//銷毀順序表

seq->array = null;

seq->size = 0;

seq->capacity = 0;

}void pushback(seqlist* seq, datatype x)//從尾部插入元素

void popback(seqlist* seq)//從尾部刪除元素

seq->size--;

}void pushfront(seqlist* seq, datatype x)//從頭部插入元素

seq->size++;//size++放在前面可以增加程式的可讀性

seq->array[0] = x;

}void popfront(seqlist* seq)//從頭部刪除元素

while (end < seq->size-1)

seq->size = seq->size - 1;

}void insert(seqlist* seq, size_t pos, datatype x)//指定位置插入元素

for (i = seq->size; i > pos; i--)

seq->array[pos] = x;

}int find(seqlist* seq, datatype x)// 尋找元素

}return -1;

}void erase(seqlist* seq, size_t pos)// 刪除指定位置元素

while (end < seq->size - 2)

seq->size--;

}void remove(seqlist* seq, datatype x)//刪除元素x

void removeall(seqlist* seq, datatype x)//刪除順序表中所有的x ,跳過需要刪除的數

size_t i = 0;

size_t j = 0;

int count = 0;

for (i = 0; j < seq->size; i++)

else

}seq->size -= count;

}void swap(int *a, int *b)

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

}} while (flag);

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

int begin = 0;

int end = seq->size - 1;

while (begin <= end)

swap(&(seq->array[begin]), &(seq->array[minindex]));

if (maxindex == begin)

swap(&(seq->array[end]), &(seq->array[maxindex]));

begin++;

end--;

}}void insertsort(seqlist* seq)//插入排序

for (size_t i = 0; i < seq->size - 1; i++)

seq->array[end + 1] = tmp;

}}int binarysearch(seqlist* seq, datatype x)//二分查詢

int begin = 0;

int end = seq->size - 1;

while (begin <= end)

else

if (seq->array[mid] > x)

else

return mid + 1;

}return -1;

}int binarysearchd(seqlist* seq, size_t begin, size_t end, datatype x)//遞迴,二分查詢

void printseqlist(seqlist* seq)

printf("\n");

}

main.c

#include"seqlist.h"

seqlist s;

void test1()

int main()

動態順序表的增刪改查

順序表還是相對於比較簡單的資料結構,所謂動態,不過是在初始化時 賦予動態空間,所以說,就直接看 了。標頭檔案 pragma once sequence list define crt secure no warnings 1 include include include include typed...

順序表的增 刪 查 改實現(c語言)

資料結構順序表 實現增 刪 查 改四個功能 具體 如下 include include pragma warning disable 4996 define num 10 typedef int datetype typedef struct seqlist seqlist void test se...

資料結構 增刪改查(靜態順序表 動態順序表)

靜態順序表實現增刪改查的所有 pragma once include include include include typedef int datatype define max size 100 typedef struct seqlist seqlist 初始化 void seqlistini...