順序表是用一段位址連續的儲存單元依次儲存資料元素的線性結構。順序錶可分為靜態儲存和動態儲存,靜態順序表比較簡單,資料空間固定,而動態順序表可以動態增容,便於存放大量資料,現主要把動態的基本實現一下~此處的排序簡單實現了一下,後面會整理出各種排序~~
//順序表的靜態儲存typedef struct seqlist_s
seqlist_s;
//順序表的動態儲存typedef struct seqlist_d
seqlist_d;
//檢查容量,增容void checkcapacity(seqlist_d *pseq)
pseq->array = temp;
}else
}
//初始化int initseqlist_d(seqlist_d* pseq)
pseq->size = 0;
pseq->capacity = init_size;
return 1;
}
//查詢size_t find(seqlist_d* pseq, datatype x)
}if (pos >= pseq->size)
return pos;
}
//尾插void pushback(seqlist_d* pseq, datatype x)
//插入void insert(seqlist_d* pseq, size_t pos, datatype x)
datatype* temp = pseq->array + pseq->size - 1;while (temp >= (pseq->array + pos))
////也可以這樣移動//for (size_t i = pseq->size - 1; i >= pos; i--)
//
*(pseq->array + pos) = x;pseq->size++;
}
//刪除pos位置的資料void erase(seqlist_d* pseq, size_t pos)
for (size_t i = pos; i < pseq->size; i++)
pseq->size--;
}
//刪除找到的第乙個xvoid remove(seqlist_d* pseq, datatype x)
else
pseq->size--;
}}
//刪除所有的x(有優化)用second指標遍歷順序表,用first指標記錄刪除後的順序表。
當second指標不是指向所要刪除的資料3時,second指向的資料賦給first指向的資料,first指標和second指標同時向後指;
當second指標指向所要刪除的資料3時,first指標不動,count計數加1,second指標繼續向後指。
這樣就把資料刪除了~~~這種方法比找到乙個就挪動一次順序表要高效一些。。。
//排序(從小到大)void sort(seqlist_d* pseq)
datatype temp;
bool flag = true;
for (size_t i = 0; (i < pseq->size - 1) && flag; i++) //進行size-1趟排序}}
}
//二分查詢(非遞迴)int binarysearch(seqlist_d* pseq, datatype x)
else if (*(pseq->array + mid) > x) //x在前半部分
else
}return -1;
}
//二分查詢(遞迴)int _binarysearch_r(seqlist_d* pseq, int left, int right, datatype x)
else if (pseq->array[mid] > x)
else
}return -1;
}int binary_r(seqlist_d* pseq, datatype x)
C語言實現順序表
標頭檔案部分 include include include typedef int datatype define maxsize 10 typedef struct seqlist seqlist 列印順序表的內容 void printseqlist seqlist seq 初始化順序表 voi...
C語言實現順序表
順序表是在計算機記憶體中以陣列的形式儲存的線性表,是指用一組位址連續的儲存單元依次儲存資料元素的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組位址連續的儲存單元中。這裡我用c語言實現了一下順序表的具體操作。其中用了一些c 的小語法。所以有可能不...
C語言實現順序表
使用c語言實現順序表 順序表的主要功能有 1 初始化順序表 2 順序表的頭插 3 順序表的尾插 4 順序表的頭刪 5 順序表的尾刪 6 順序表的任意點插入 7 順序表的查詢刪除 8 順序表的排序 9 清空順序表 10 列印順序表 具體 實現如下 seqlist.h include include i...