順序表的實現

2021-09-24 20:14:12 字數 2889 閱讀 9989

為了完成順序錶小工程,並且增加**的可讀性.

我們將所有的函式宣告以及結構體定義放在標頭檔案中,所以先建立乙個標頭檔案 seqlist.h

建立乙個原始檔seqlist.c用來寫函式功能

另乙個原始檔main.c測試**功能

首先把我們把結構體的定義和想實現的函式功能的宣告放在標頭檔案中

seqlist.h

#ifndef _seglist_h	//為了防止標頭檔案重複引用,沒有定義就往下走,定義了就不走

#define _seglist_h

#include #include #include typedef int sldatatype;

typedef struct seqlist seqlist;

// 基本增刪查改介面

//初始化

void seqlistinit(seqlist* psl, size_t capacity);

//釋放,銷毀函式

void seqlistdestory(seqlist* psl);

//檢查是否擴容

void checkcapacity(seqlist* psl);

//尾插

void seqlistpushback(seqlist* psl, sldatatype x);

//尾刪

void seqlistpopback(seqlist* psl);

//頭插

void seqlistpushfront(seqlist* psl, sldatatype x);

//頭刪

void seqlistpopfront(seqlist* psl);

//查詢函式,找到後返回下標

int seqlistfind(seqlist* psl, sldatatype x);

//插入函式

void seqlistinsert(seqlist* psl, size_t pos, sldatatype x);

//刪除對應位置資料

void seqlisterase(seqlist* psl, size_t pos);

//清空對應位置資料

void seqlistremove(seqlist* psl, sldatatype x);

//修改對應位置資料

void seqlistmodify(seqlist* psl, size_t pos, sldatatype x);

//列印函式

void seqlistprint(seqlist* psl);

//氣泡排序

void seqlistbubblesort(seqlist* psl);

//二分查詢,找到後返回下標

int seqlistbinaryfind(seqlist* psl, sldatatype x);

#endif //_seqlist_h_

寫函式功能的原始檔seqlist.c

#include "seqlist.h"

//初始化

void seqlistinit(seqlist* psl, size_t capicity)

//釋放銷毀函式

void seqlistdestory(seqlist* psl)

}//檢查是否擴容

void checkcapacity(seqlist* psl)

}//尾插,插入資料時記得檢查是否需要擴容

void seqlistpushback(seqlist* psl, sldatatype x)

//尾刪

void seqlistpopback(seqlist* psl)

//頭插,插入資料時記得檢查是否需要擴容

void seqlistpushfront(seqlist* psl, sldatatype x)

psl->array[0] = x;

psl->size++;

}//頭刪

void seqlistpopfront(seqlist* psl)

}//查詢函式,找到後返回對應下標

int seqlistfind(seqlist* psl, sldatatype x)

} return -1;

}//插入函式

void seqlistinsert(seqlist* psl, size_t pos, sldatatype x)

psl->array[pos] = x;

psl->size++;

}//刪除對應位置資料

void seqlisterase(seqlist* psl, size_t pos)

}//清空對應資料

void seqlistremove(seqlist* psl, sldatatype x)

}//修改對應位置資料

void seqlistmodify(seqlist* psl, size_t pos, sldatatype x)

//列印函式

void seqlistprint(seqlist* psl)

putchar('\n');

}//氣泡排序

void seqlistbubblesort(seqlist* psl)

} }}//二分查詢,找到後返回下標

int seqlistbinaryfind(seqlist* psl, sldatatype x)

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

else

}return -1;

}

最後是測試**功能的main.c

#include "seqlist.h"

void seqtest()

int main()

順序表的實現

使用c 實現一下常用的資料結構,參考書為 資料結構 演算法與應用 c 語言描述 此次 為順序表,為了保證通用性採用模板機制,演算法本身沒有什麼難度,畢竟是基礎演算法,但是長時間不用c 一些高階特性和陷阱著實讓人難受。此次 共分三個檔案 1 sq list.h 實現順序表的結構和基本操作。2 excp...

順序表的實現

順序表很簡單,表裡面有個陣列,陣列中實際元素的個數 長度 lengthsqlcurrent,還有就是初始大小變數。可以解決約瑟夫環問題。最核心的兩個方法 刪除和插入,這兩個過程要移動元素。核心 package com.ibm.jzy.seqlist public class sqlist imple...

順序表的實現

順序表的操作 time limit 1000ms memory limit 65536k description 建立乙個順序表,然後在已建好的順序表上實現順序表插入和刪除等基本操作。最後輸出最終結果。input 有多組測試資料,每組資料由三部分組成。第一部分包含兩個整數n n 1000 和m m ...