OJ刷題記錄 線性表的儲存結構與操作

2021-10-09 17:51:02 字數 3724 閱讀 3916

題目要求:

請你定義乙個順序表,可以對順序表進行如下操作:

(1)在某個元素之前插入一些元素

(2)刪除某個位置的元素

(3)查詢某元素

(4)獲取某個位置的元素

(5)遍歷輸出所有元素

鍵盤輸入一些命令,可以執行上述操作。本題中,順序表元素為整數,順序表的第乙個元素位置為1,順序表的最大長度為20。

在某個位置之前插入操作的命令:i,接下來的一行是插入的元素個數n,

下面是n行資料,每行資料有兩個值,分別代表插入位置與插入的元素值

查詢某個元素:s x,x是要查詢的元素值

獲取某個位置的元素:g i,i是需要獲取的元素位置

刪除某個位置的元素:d i,i是被刪除的元素位置

遍歷輸出所有元素:v

當輸入的命令為e時,程式結束

輸出描述

當輸入的命令為s時,請輸出要查詢元素的位置,如果沒找到,請輸出none

當輸入的命令為g時,請輸出獲取的元素值,如果輸入的元素位置不正確,

輸出「位置不正確」

當輸入的命令是d時,請輸出被刪除的那個元素值,如果表空,輸出「下溢」,

如果輸入的位置不正確,輸出「位置不正確」

當輸入命令是i時,如果表滿,輸出「上溢」,如果輸入的位置不正確,

輸出「位置不正確」

注意,所有的元素均佔一行

輸入樣例i2

1 12 2

s 2d 1i2

1 32 4

g 2v

e輸出樣例21

4342

解題思路:

運算元組,重點為通過移動陣列元素實現線性表的插入,刪除操作。

然後,注意細節 !

通關**:

#include

#define maxsize 20

using

namespace std;

class

seqlist

public

:void

insert

(int pos,

int val)

;int

delete

(int pos)

;int

search

(int val)

;int

get(

int pos)

;void

print()

;private

:int arr_[maxsize]

;int len_;};

void seqlist::

insert

(int pos,

int val)

arr_[pos -1]

= val;

len_++;}

void seqlist::

print()

}int seqlist::

delete

(int pos)

len_--

;return deletedval;

}int seqlist::

get(

int pos)

int seqlist::

search

(int val)}if

(isfind ==

false

)throw

"none"

;return pos;

}int

main()

break

;case

'd':

cin >> pos;

cout << list.

delete

(pos)

<< endl;

break

;case

's':

cin >> val;

cout << list.

search

(val)

<< endl;

break

;case

'g':

cin >> pos;

cout << list.

get(pos)

<< endl;

break

;case

'v':

list.

print()

;break;}

}catch

(const

char

* str)

}return0;

}

題目要求:

同上。解題思路:

水。通關**:

#include

using

namespace std;

struct node };

class

list

;list::

list()

list::

~list()

}void list::

insert

(int pos,

int val)

count++;}

length_++;}

int list::

search

(int val)

count++;}

if(isfind ==

false

)throw

"none"

;return pos;

}int list::

delete

(int pos)

count++;}

length_--

;return val;

}int list::

get(

int pos)

count++;}

return val;

}int list::

getlength()

void list::

print()

intmain()

break

;case

's':

cin >> val;

cout << list.

search

(val)

<< endl;

break

;case

'g':

cin >> pos;

cout << list.

get(pos)

<< endl;

break

;case

'd':

cin >> pos;

cout << list.

delete

(pos)

<< endl;

break

;case

'l':

cout << list.

getlength()

<< endl;

break

;case

'v':

list.

print()

;break;}

}catch

(const

char

* str)

}return0;

}

畢。

OJ刷題記錄 佇列的儲存結構與操作

題目要求 請定義乙個順序佇列,可以對佇列進行 入隊 出隊 清空佇列 獲取隊首元素 等操作。鍵盤輸入一些命令,可以執行上述操作。本題中,佇列的元素為字母,佇列的最大元素個數為100。輸入描述 輸入各個命令,它們對應的格式如下 入隊 e a,a代表入隊的元素,這裡e和元素之間用空格分隔。清空佇列 c 獲...

線性表(線性儲存結構)

線性表有兩種物理儲存結構 順序儲存結構和鏈式儲存結構 順序儲存結構指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。陣列 如 a1,a2,an 物理上的儲存方式事實上就是在記憶體中找個初始位址,然後通過佔位的形式,把一定的記憶體空間給佔了,然後把相同資料型別的資料元素依次放到這塊空地種。1.儲...

線性表 線性表的順序儲存結構

線性表的順序儲存結構 線性結構是乙個資料元素的有序 次序 集。集合中必存在唯一的乙個 第一元素 集合中必存在唯一的乙個 最後元素 除最後元素外,均有唯一的後繼 除第一元素外,均有唯一的前驅。adt list 資料關係 r1 adt list 容易混的概念 引用符號 和引用型操作沒有關係 加工型操作 ...