第一板塊:首先我們新建乙個標頭檔案"seqlist.h",這一板塊我們來從巨集觀上定義順序表的結構,以及宣告尾插/尾刪/頭插/頭刪/任意插/任意刪/查詢/移除等相關操作的函式
`
***第二板塊我們來對第一板塊所宣告的函式作乙個具體的定義,實現一下操作函式的細節*新建標頭檔案 'seqlit.h』#pragma once
//順序表結構
//陣列
//靜態順序表:元素個數固定
#if 0
typedef int datatype;
#define max_size 100;
struct seqlist;
#endif
//動態順序表
typedef int datatype;
typedef struct seqlistseqlist,* pseq;//給結構體型別變數取別名(變數型別),給結構體型別指標取別名(結構體的指標型別)
//操作
void seqlistinit(pseq ps, int capacity);
void seqlistpushback(pseq ps, datatype data);//
void seqlistpopback(pseq ps);
void seqlistpushfront(pseq ps, datatype data);
void seqlistpopfront(pseq ps);
void seqlistinsert(pseq ps, int pos, datatype data);
void seqlisterase(pseq ps, int pos);
int seqlistfind(pseq ps, datatype data);
int seqlistempty(pseq ps);
int seqlistcapacity(pseq ps);
int seqlistsize(pseq ps);
void seqlistclear(pseq ps);
void seqlistremove(pseq ps, datatype data);
void seqlistdestory(pseq ps);
void checkcapacity(pseq ps);
void testseqlist();
**第三板塊我們來新建乙個"test.c"原始檔用來定義主函式#include"seqlist.h"
#include****
#include#includevoid seqlistinit(pseq ps, int capacity)
ps->_capacity = capacity;
ps->_size = 0;
}void seqlistdestory(pseq ps)
}//尾插 時間複雜度 o(1)
void seqlistpushback(pseq ps, datatype data)
//尾刪 時間複雜度 o (1)
void seqlistpopback(pseq ps)
ps->_size--;
}//任意位置插入 時間複雜度為o(n)( 最壞情況,假如插在第乙個元素位置)
void seqlistinsert(pseq ps, int pos, datatype data)
//checkcapacity;
for (int i = ps->_size - 1; i >= pos; i--)
ps->_array[pos] = data;
ps->_size++;
}//任意位置刪除 時間複雜度為o(n) (最壞情況,假如刪除第乙個元素)
void seqlisterase(pseq ps, int pos)
for (int i = pos + 1; i < ps->_size ; i++)
ps->_size--;
}int seqlistfind(pseq ps, datatype data)
} return -1;
}int seqlistcapacity(pseq ps)
int seqlistsize(pseq ps)
int seqlistempty(pseq ps)
//移除第乙個值為data的元素
void seqlistremove(pseq ps, datatype data)
//移除所有值為data的元素
void seqlistremoveall(pseq ps, datatype data)
else
//ps->_size -= count;
} ps->_size -= count;
/* int pos = -1;
while (-1 != (pos = seqlistfind(ps, data))) */
}void seqlistclear(pseq ps)
//頭插 時間複雜度 o(n)
void seqlistpushfront(pseq ps, datatype data)
//插入元素
ps->_array[0] = data;
ps->_size++;
}//頭刪 時間複雜度 o(n)
void seqlistpopfront(pseq ps)
// i 代表要搬移的元素
for (int i = 1; i < ps->_size; ++i)
ps->_size--;
}void seqlistprint(pseq ps)
printf("\n");
}void checkcapacity(pseq ps)
//拷貝元素
for (int i = 0; i < ps->_size; ++i)
//釋放原空間
free(ps->_array);
//更新引數
ps->_array = ptemp;
ps->_capacity = newcapacity; }}
//提高查詢效率方法;氣泡排序然後二分查詢
void swap(int*x, int*y)
void bubblesort(pseq ps)
} if (!ischgange) }}
int binarysearch(pseq ps, datatype data);
void testseqlist()
else
seqlisterase(&s, 1);
pos = seqlistfind(&s, 5);
if (pos != -1)
else
seqlistprint(&s);
printf("size=%d\n", seqlistsize(&s));
printf("capacity=%d\n", seqlistcapacity(&s));
seqlistdestory(&s);
}
#include#include"seqlist.h"
int main()
資料結構之順序表
首先是標頭檔案seqlist.h ifndef seqlist h define seqlist h include includeusing namespace std define elemtype int define seqlist default size 10 typedef struc...
資料結構之順序表
順序表的思想容易了解,但是 不容易掌握,我這裡根據老師所提供的 進行一下簡單的總結 這個 包含順序表的查詢,插入,刪除,建表,輸出資料 includeusing namespace std define ok 1 define error 0 define overflow 2 typedef in...
資料結構之順序表
順序表就是按照順序儲存方式儲存的線性表,該線性表的結點按照邏輯次序一次存放在計算機的一組連續的儲存單元中如下圖 由於順序表是一次存放的,只要知道了該順序表的首位址以及每個資料元素所占用的儲存長度,那麼我們就很容易計算出任何乙個資料元素 也就是資料繫結點 的位置。1 結點資料型別 public cla...