順序表操作

2021-08-18 08:22:46 字數 3283 閱讀 8317

#pragma once 

#include

#include

#define max_size 20

typedef int datatype;

typedef struct seqlist

seqlist;

seqlist s;

seqlist.h

void seqlistinit(seqlist *ps);//結構體初始化

void seqlistpush(seqlist *ps, int data);  //新增資料

void seqlistpushfront(seqlist *ps, int data); //頭插

void seqlistpopfront(seqlist *ps);//頭刪

void seqlistpushback(seqlist *ps, int data);  //尾插

void seqlistpopback(seqlist *ps); //尾刪

void seqlistinsert(seqlist *ps, int pos, int data);   //隨機插

void seqlistremove(seqlist *ps, int data);//刪除乙個data資料

void seqlistremoveall(seqlist *ps, int data);//刪除所有data資料

void bubblesort(seqlist *ps);//氣泡排序

void selectsort(seqlist *ps);//選擇排序

int seqlistfind(seqlist *ps, int data);//查詢資料

void swop(int *p, int*q);//交換

int binarysearch(seqlist *ps, int data);//二分查詢

void seqlistprint(seqlist *ps);                     //列印

////結構體初始化

void seqlistinit(seqlist *ps)

ps->_size = 0;

}//新增資料

void seqlistpush(seqlist *ps, int data)

ps->_array[ps->_size] = data;

ps->_size++;

}//頭插

void seqlistpushfront(seqlist *ps, int data)

if (10 == ps->_size)

#if 0

for (i = ps->_size; i >0; i--)

ps->_array[i] = ps->_array[i-1];

ps->_array[0] = data;

ps->_size++;

#endif

seqlistinsert(&s, 0, data);

}//頭刪

void seqlistpopfront(seqlist *ps)

for (i = 0; i < ps->_size - 1; i++)

ps->_size--;

}//尾插

void seqlistpushback(seqlist *ps, int data)

if (10 == ps->_size)

#if 0

ps->_array[ps->_size] = data;

ps->_size++;

#endif

seqlistinsert(&s, ps->_size, data);

}//尾刪

void seqlistpopback(seqlist *ps)

ps->_size--;

}//列印

void seqlistprint(seqlist *ps)

if (0 == ps->_size)

printf("size: %d\n", ps->_size);

for (i = 0; i < ps->_size; i++)

putchar('\n');

}//隨機插

void seqlistinsert(seqlist *ps, int pos, int data)

if (10 == ps->_size)

for (i = ps->_size; i >pos; i--)

ps->_array[pos] = data;

ps->_size++;

}//查詢資料

int seqlistfind(seqlist *ps, int data)

for (i = 0; i < ps->_size; i++)}}

//二分查詢

int binarysearch(seqlist *ps, int data)

else if (data > ps->_array[mid])

else

}return -1;

}//刪除乙個data的資料

void seqlistremove(seqlist *ps, int data)

i = seqlistfind(&s, data);

for (j = i; j _size; j++)

#if 0

for (i = 0; i < ps->_size; i++)}}

#endif

ps->_size--;

}//刪除所有data資料

void seqlistremoveall(seqlist *ps, int data)

for (i = 0; i < ps->_size; i++)

else

}ps->_size -= count;

}//氣泡排序

void bubblesort(seqlist *ps)

for (i = 0; i < ps->_size - 1; i++)}}

}//交換資料

void swop(int *p, int *q)

tmp = *p;

*p = *q;

*q = tmp;

}//選擇排序

void selectsort(seqlist *ps)

for (i = 0; i < ps->_size; i++)

swop(&ps->_array[max], &ps->_array[ps->_size - i - 1]);

}test.c

#include

#include "seqlist.h"

int main()

順序表操作

順序表的簡單實現。包括表的初始化,插入,刪除,歸併。記憶體分配使用c語言的malloc和realloc來實現。假設在每個合法位置進行插入和刪除操作的概率相等,則這兩種操作每次的平均移動次數為n 2,時間複雜度為o n 如下 include include include using namespac...

靜態順序表順序表的基本操作

一般採用陣列表示順序表,陣列有靜態陣列和動態陣列之分,在此我們採用靜態陣列表示靜態順序表,如圖為線性表的結構 下面實現順序表的基本操作 初始化 銷毀 尾插 頭插 尾刪 頭刪 根據指定元素刪除 指定位置插入和刪除 查詢 靜態順序表的結構定義 define maxsize 100 typedef int...

順序表基本操作

先建個seqlist.h 如下 include include define maxn 100 定義線性表的長度 typedef struct seqlisttype void seqlistinit seqlisttype sl 初始化順序表 int seqlistlength seqlistty...