資料結構(5)順序表簡單實戰

2021-10-06 06:21:14 字數 2483 閱讀 1934

1、從順序表中刪除具有最小值的元素(假設唯一)並由函式返回被刪元素的值,若順序表為空則顯示出錯資訊並退出執行

分析:

我們先選擇使用陣列來表示順序儲存。

結點的資料結構如下:

template

struct sqnode

;實現邏輯:

按序找出最小的元素,然後後面的每乙個元素向前挪一位

完整**如下:

#include

using

namespace std;

#define maxsize 50

template

<

typename elemtype>

struct sqnode

;//從順序表中刪除具有最小值的元素(假設唯一)並由函式返回被刪元素的值,若順序表為空則顯示出錯資訊並退出執行

template

<

typename elemtype>

bool

deleteminelemnode

(sqnode

&l,elemtype &deldata)

deldata = l.data[0]

;int pos =0;

//記錄最小元素的位置

//找出最小元素的位置,並記錄最小元素的值

for(

int i =

1; i < l.length;

++i)

}//後面的元素依次向前移動一位

for(

int i = pos; i< l.length-1;

++i)

l.length--

;return

true;}

intmain()

cout<

"刪除前順序表元素依次為:"

;for

(int i =

0; i < sqnode.length;

++i)

cout<<

" "<

;int deldata;

deleteminelemnode

(sqnode,deldata)

; cout<

"刪除後順序表元素依次為:"

;for

(int i =

0; i < sqnode.length;

++i)

cout<<

" "<

; cout<

"刪除的元素為:"

<

return0;

}

執行結果:

第乙個例子寫了完整**。後續不再寫完整**,只寫演算法的主要實現過程

2、設計乙個高效演算法。將順序表l的所有元素逆置。要求演算法的空間複雜度為o(1)。

設計思路:

比如順序表裡元素為a1、a2、a3、a4、a5。我們可以直接從順序表中間乙份為2,進行首尾兩兩互換,a1與a5換,a2與a4換。這樣不再需要額外的空間開銷(兩個數互換,不借助第三個數)。

實現過程:

int

reverse

(sqnode &l)

}

3、對長度為n的順序表l,編寫乙個時間複雜度為o(n)、空間複雜度為o(1)的演算法,該演算法刪除順序表上所有值為x的資料元素。設計思路:順次遍歷順序表,將值不等於x的資料元素的個數用k表示,然後第k位放第k個不等於x的元素。

實現過程:

int

deletex

(sqnode &l,

const elemtype x)

l.length = k;

}return0;

}

4、從有序順序表中刪除其值在給定值s與t之間的所有元素(sint

deletestot

(sqnode &l,

const elemtype s,

const elemtype t)

for(

int i =

1; i < l.length;

++i)

else

if(l.data[i-1]

<= t && l.data[i]

> t)if(

!st)

l.data[i -

(st - sk)

]= l.data[i];}

return0;

}人,總是要有一點精神的,不是嗎

資料結構 簡單的順序表結構

編寫乙個程式exp2 1.cpp,實現順序表的各種運算 假設順序表的元素型別為char 並在此基礎上完成如下功能 1 初始化順序表l 2 採用尾插法依次插入元素a,b,c,d,e 3 輸出順序表l 4 輸出順序表l的長度 5 判斷順序表l是否為空 6 輸出順序表l的第3個元素 7 輸出元素a的位置 ...

資料結構 順序表簡單操作

基於靜態陣列的順序表簡單操作 初始化 尾插 尾刪 頭插 頭刪 讀任意位置元素 修改任意位置元素 查詢指定元素值的下標 在任意位置插入元素 seqlist.h pragma once include include include include include define seqlistmax 1...

資料結構(C )簡單順序表

資料結構學過了模板之後就開始了線性表的學習,線性表又分為簡單的順序儲存和鏈式儲存兩種方式。兩種方法各有長短,根據不同的實際情況定義使用。是零個或多個具有相同型別的資料元素的有限序列。通常的線性表中有兩個元素,乙個是儲存的資料,另乙個是表資料的長度。線性表的順序儲存,是指用一維位址連續的儲存單元依次儲...