c 版資料結構 之順序表的實現

2021-09-08 04:44:07 字數 3364 閱讀 1445

seqlist.h

#ifndef seqlist_h

#define seqlist_h

#includeusing namespace std;

typedef enumstatus;

templateclass seqlist

; //順序表的預設長度

type *base; //存放元素陣列的首位址

int capacity; //順序表的容量

int size; //順序表實際存放元素的個數

private://為內部函式所呼叫,不希望在類外訪問

bool isfull()

bool isempty()

status destory()

public:

seqlist(int sz = defaultsize)

~seqlist()

status push_back(const type &x)

base[size++] = x;

return true;

} status push_front(const type &x)

for (int i = size - 1; i >= 0; --i) //------------------>從最後乙個元素到第乙個元素依次往後移動乙個位置

base[i+ 1] = base[i];

base[0] = x;

size++;

return false;

} void show_list()

status pop_back(type &x)//將刪除的元素存放在x中,以備不時之需

x = base[--size];

return true;

} status pop_front(type &x)

x = base[0];//將刪除的元素儲存在x中,以備不時之需

for (int i = 1; i <= size - 1; ++i) //--------------->從第二個元素到最後乙個元素,依次覆蓋前乙個元素

base[i - 1] = base[i];

size--;

return true;

} status insert_pos(int pos,const type &x)

if (isfull())

for (int i = size - 1; i >= pos; --i)//--------------->從最後乙個元素到所插入的位置的元素依次往後移動乙個位置,為所要插入的元素留出位置

base[i + 1] = base[i];

base[pos] = x;

size++;

return true;

} status delete_pos(int pos,type &x)

if (isempty())

x = base[pos];

for (int i = pos + 1; i < size; ++i)//從刪除位置後面的第乙個元素開始依次覆蓋前乙個元素

base[i - 1] = base[i];

size--;

return true;

} int find(const type &x)

return -1;

} void sort()//氣泡排序

}}

} void reserve()//左右對稱位置交換 }

status insert_val(const type &x)

sort();

for (int i = 0; i < size; ++i)

}base[size++] = x;//不存在比所要插入元素大的元素,在最後位置插入它

return true;

} /*

status insert_val(const type &x)//用while取代for

sort();

int i = 0;

while(ibase[i])

insert_pos(i,x);

return true;

} */

status delete_val(const type &x)

break;

case 2:

cout << "請輸入要插入的元素(-1結束):>";

while (cin >> item, item != -1)

break;

case 3:

mylist.show_list();

break;

case 4:

mylist.pop_back(item);

break;

case 5:

mylist.pop_front(item);

break;

case 6:

cout << "請輸入要插入的元素:";

cin >> item;

mylist.insert_val(item);

break;

case 7:

cout << "請輸入要插入的位置:";

cin >> n;

cout << "請輸入要插入的元素:";

cin >> item;

mylist.insert_pos(n,item);

break;

case 8:

cout << "請輸入要查詢的元素:";

cin >> item;

cout << mylist.find(item) << endl;

break;

case 9:

cout << "請輸入要刪除的位置:";

cin >> n;

mylist.delete_pos(n,item);

break;

case 10:

cout << "請輸入要刪除的元素:";

資料結構之順序表 C 版

include include define maxlistsize 100 預設的儲存空間最大容量 using namespace std typedef string elemtype typedef structsqlist 俗稱順序表 void initlist sqlist l void ...

資料結構之順序表(java版)

要點 順序表 採用順序儲存結構的線性表 順序儲存結構和鏈式儲存結構不同,強調的是儲存元素在實體地址儲存的上連續!可實現隨機訪問 只要知道第乙個元素的記憶體位址,再通過簡單的加減就能找到任意乙個元素了 順序表耗時在對移動元素上,進行插入 刪除時都需要移動元素 本人做順序表的難點主要在於對順序表進行插入...

資料結構 順序表的實現(C語言版)

include define maxn 100 typedef int status using namespace std typedef structsqlist 初始化順序表 status initlist sqlist l 順序表的插入 將要插入的新元素e放到第i個位置 status lis...