順序表 插 刪 改 排,以及十個測試用例

2021-08-13 08:13:49 字數 3197 閱讀 4426

功能函式:

①列印鍊錶

②初始化鍊錶

③釋放動態分配的記憶體

④指定下標插入/刪除元素

⑤頭插/頭刪/尾插/尾刪

⑥查詢

⑦更改

⑧氣泡排序

⑨快排

⑩二分查詢

seqlist.h

#pragma once

#include

#include

#include

#define m 4

typedef struct seqlist seqlist;

typedef int datatype;

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);

void seqerase(seqlist* pseq, size_t pos);

int seqfind(seqlist* pseq, datatype x);

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

void bubblesort(seqlist* pseq);

void selectsort(seqlist* pseq);

int binarysearch(seqlist* pseq, datatype x);

seqlist.c

#define _crt_secure_no_warnings -1

#include "seqlist.h"

typedef

struct seqlist

seqlist;

void seqinit(seqlist** pseq)//初始化順序表

void seqprint(seqlist* pseq)//輸出順序表

printf("\n");

}void seqdestory(seqlist* pseq)//釋放記憶體

seqlist* checkfull(seqlist* pseq)//滿則擴容

pseq->_capacity *= 2;

pseq->_a = tem;

}return pseq;

}void seqinsert(seqlist* pseq, size_t pos, datatype x)//插入

else

pseq->_a[end + 1] = x;

++pseq->_size;

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

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

void seqerase(seqlist* pseq, size_t pos)//刪除指定下標元素

size_t start = pos;

while (start < pseq->_size - 1)

--pseq->_size;

}void seqpopback(seqlist* pseq)//頭刪

void seqpopfront(seqlist* pseq)//尾刪

int seqfind(seqlist* pseq, datatype x)//查

}return -1;

}void seqat(seqlist* pseq, size_t pos, datatype x)//替換指定下標元素內容

void swap(datatype* x, datatype* y)//交換

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

}if (0 == flag)

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

if (pseq->_a[i] > pseq->_a[max])

}swap(&(pseq->_a[left]), &(pseq->_a[min]));

if (left == max)

max = min;

swap(&(pseq->_a[right]), &(pseq->_a[max]));

++left;

--right;

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

else

if (x < pseq->_a[mid])

else

}return -1;

}

test.c

#define _crt_secure_no_warnings -1

#include "seqlist.h"

void test1(seqlist* pseq)//測試用例1:插入指定下標元素

void test2(seqlist* pseq)//測試用例2:尾插

void test3(seqlist* pseq)//測試用例3:尾刪

void test4(seqlist* pseq)//測試用例4:頭插

void test5(seqlist* pseq)//測試用例5:頭刪

void test6(seqlist* pseq)//測試用例6,刪除指定下標元素

void test7(seqlist* pseq)//測試用例7,查詢

void test8(seqlist* pseq)//測試用例8:氣泡排序

void test9(seqlist* pseq)//測試用例9:快排

void test10(seqlist* pseq)//測試用例10:二分查詢

int main()

順序表 增刪改操作

1.從鍵盤依次輸入10個整數 彼此以若干空格隔開 在記憶體中建立乙個順序表。然後完成以下操作 查詢 輸入乙個欲查詢的整數,找到則顯示第乙個相匹配的整數在順序表中所處的位置,若不存在,則顯示 not found 刪除 輸入乙個表示欲刪除整數的位置的整數i 注意i的合法性 在順序表中刪除該數,並保證刪除...

實現順序表以及順序表的簡單運算

自定義標頭檔案 my list.h define crt secure no warnings ifndef my list h define my list h 檔案功能 實現線性表的基本運算 1 順序表的插入預算 2 順序表中元素的逆序 3 順序表的刪除運算 define max size 10...

動態順序表的增刪改查

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