功能函式:
①列印鍊錶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...