C語言 靜態順序表的實現和相關操作

2021-07-25 03:39:34 字數 3888 閱讀 6347

靜態順序表:一段位址連續的儲存單元依次儲存資料元素的線性結構

標頭檔案 seqlist.h

#pragma once

#include#include#include#include#define max_size 100

typedef int datatype;

typedef struct seqlist

seqlist;

typedef struct seqlist seqlsit;

//初始化、刪除

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 printseqlist(seqlist* seq);

//插入、找到、刪除指定位置、刪除乙個2、刪除許多2

void insert(seqlist* seq, size_t pos, datatype x);

void find(seqlist* seq, datatype x);

void erase(seqlist* seq, size_t pos);

void remove(seqlist* seq, datatype x);

void removeall(seqlist* seq, datatype x);

//交換兩個數

void swap(int* x, int* y);

//冒泡、選擇、插入排序 二分查詢

void bubblesort(seqlist* seq);

void selectsort(seqlist* seq);

void insertsort(seqlist* seq);

int binarysearch_one(seqlist* seq, datatype x);

int binarysearch_two(seqlist* seq, datatype x);

int binarysearch_r(seqlist* seq, datatype x);

#define _crt_secure_no_warnings 1  

#include "seqlist.h"

//在順序表pos位置插入元素

void insert(seqlist* seq, size_t pos, datatype x)

if (seq->size >= max_size)

else

seq->array[pos - 1] = x;

} seq->size++;

}//在順序表中查詢某個元素

void find(seqlist* seq, datatype x)

} printf("沒有找到這個元素");

}//刪除順序表pos位置上的元素

void erase(seqlist* seq, size_t pos)

seq->size--;

}//在順序表中刪除x元素

void remove(seqlist* seq, datatype x)

for (int i = seq->size - 1; i >= 0; i--) }

printf("沒有找到這個元素");

}//在順序表中刪除所有為x的元素

void removeall(seqlist* seq, datatype x)

else

}seq->size -= count;

}//氣泡排序

void bubblesort(seqlist* seq)

else

}if (flag == 0)

}}//選擇排序

void selectsort(seqlist* seq)

if (seq->array[i] < seq->array[minindex])

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

if (maxindex == begin)

maxindex = minindex;

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

++begin;

--end; }}

//插入排序

void insertsort(seqlist* seq)

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

//二分查詢

int binarysearch_one(seqlist* seq, datatype x)

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

else

}return -1;

}//二分查詢

int binarysearch_two(seqlist* seq, datatype x)

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

else

}return -1;

}//二分查詢遞迴方法

int binarysearch_r(seqlist* seq, datatype x, int begin, int end)

//兩個數的交換

void swap(int* x, int* y)

//列印順序表

void printseqlist(seqlist* seq)

printf("\n");

}//初始化順序表

void initseqlist(seqlist *seq)

//在順序表的尾部插入元素

void pushback(seqlist* seq, datatype x)

seq->array[seq->size] = x;

seq->size++;

}//在順序表的尾部刪除元素

void popback(seqlist* seq)

seq->size--;

}//在順序表頭部插入元素

void pushfront(seqlist* seq, datatype x)

else

seq->array[0] = x;

} seq->size++;

}//在順序表的頭部刪除元素

void popfront(seqlist* seq)

else }

seq->size--;

}

#define _crt_secure_no_warnings 1  

#include "seqlist.h"

void test4()

void test3()

void test2()

void test1()

void test()

int main()

靜態順序表的實現(C語言)

先來了解一下什麼是順序表。順序表是在計算機記憶體中以 陣列的形式儲存的線性表,是指用一組位址連續的 儲存單元 依次儲存 資料元素 的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組位址連續的儲存單元中。來看一下什麼是連續儲存 像a b c d 這...

靜態和動態順序表的實現(c語言)

一 靜態順序表的實現 seqlist.h檔案 pragma once define max size 1000 typedef int datatype typedef unsigned int size t typedef struct seqlist seqlist void initseqli...

c語言實現靜態順序表

標頭檔案如下 ifndef s l define s l include include include pragma warning disable 4996 define max size 10 typedef int datatype typedef struct seqlist seqlis...