波波的資料結構屬實上的快,這裡將會寫些pta的解析,算是複習 預習,幫助我與大家期末不掛科
# 順序表2-1
對於順序儲存的長度為n的線性表,訪問結點和增加結點的時間複雜度為:(b)
a.o(1), o(1)
b.o(1), o(n)
c.o(n), o(1)
d.o(n), o(n)
解析 :順序儲存可以實現「隨機訪問」,因此訪問結點的時間複雜度為o(1),而插入、刪除結點由於涉及到大量移動元素,故其時間複雜度為o(n)。
2-2在n個結點的順序表中,演算法的時間複雜度為o(1)的操作是:(a)
a.訪問第i個結點(1≤i≤n)和求第i個結點的直接前驅(2≤i≤n)
b.在第i個結點後插入乙個新結點(1≤i≤n)
c.刪除第i個結點(1≤i≤n)
d.將n個結點從小到大排序
解析:可以從上題的解析可以知道,想要訪問l->data[n]就行
2-3若某線性表最常用的操作是訪問任一指定序號的元素和在最後進行插入和刪除運算,則利用哪種儲存方式最節省時間?(d)
a.雙鏈表
b.單迴圈鍊錶
c.帶頭結點的雙迴圈鍊錶
d.順序表
解析:「訪問任一指定序號」最好的方法是實現「隨機訪問」,則可採用順序表。並且,因為插入和刪除操作都是在最後進行的,所以無需大量移動資料元素,選項d是最合適的。 鍊錶將在下一章詳細講解
2-4順序表中第乙個元素的儲存位址是100,每個元素的長度為2,則第5個元素的位址是( c)。
a.100
b.105
c.108
d.110
解析:第5個元素的儲存位址為100+2×(5-1)=108。
2-5用陣列表示線性表的優點是(b)。
a.便於插入和刪除操作
b.便於隨機訪問
c.可以動態地分配儲存空間
d.不需要占用一片相鄰的儲存空間
解析:對順序儲存的線性表進行插入和刪除操作時,需要移動大量的元素,因此不便於進行插入刪除操作,a選項錯誤;陣列的儲存空間大小一開始就已經分配好,不能動態分配儲存空間,所以 c選項錯誤;陣列正是占用一片相鄰的儲存空間,所以d選項也錯誤。
2-6若長度為n的線性表採用順序儲存結構,那麼刪除它的第i個資料元素之前,需要它一次向前移動(a)個資料元素。
a.n-i
b.n+i
c.n-i-1
d.n-i+1
解析:順序表刪除元素是將該元素後面的位置一一覆蓋,共n-i個
2-7對於順序表,以下說法錯誤的是( a)
a.順序表是用一維陣列實現的線性表,陣列的下標可以看成是元素的絕對位址
b.順序表的所有儲存結點按相應資料元素間的邏輯關係決定的次序依次排列
c.順序表的特點是:邏輯結構中相鄰的結點在儲存結構中仍相鄰
d.順序表的特點是:邏輯上相鄰的元素,儲存在物理位置也相鄰的單元中
解析:順序表是用一維陣列實現的線性表,陣列的下標可看成元素的相對位址,它們是邏輯上相鄰的元素,儲存在物理位置也相鄰的單元中。在鍊錶中,單鏈表中每個結點只有乙個鏈域,而雙鏈表中的結點有prior和next兩個鏈域。
2-8若長度為n的線性表採用順序結構,在第i個資料元素之前插入乙個元素,需要它依次向後移動(b)個元素。
a.n-i
b.n-i+1
c.n-i-1
d.i解析:與上題的刪除不同,插入需要位置i的元素也一起移動,所以共n-i+1個
2-9順序儲存表示中資料元素之間的邏輯關係是由(c )表示的。
a.指標
b.邏輯順序
c.儲存位置
d.問題上下文
解析:順序儲存結構就是用一維陣列儲存資料結構中的資料元素,其邏輯關係由儲存位置(即元素在陣列中的下標)表示。
2-10
在長度為n的順序表的表尾插入乙個新元素的時間複雜度為(b )。
a.o(n)
b.o(1)
c.o(n^2 )
d.o(log2n)
解析:在表尾插入新元素不需要對前面的結點進行移動
本題要求實現乙個函式,要求從順序表中查詢指定元素,並返回第乙個查詢成功的元素在表中的位置序號,若查詢失敗,則返回0;
函式介面定義:int locateelem(sqlist l,elemtype e);
其中sqlist結構定義如下:
typedef structsqlist;
```### 裁判測試程式樣例:
```c++
#include #include #define maxsize 5
typedef int elemtype;
typedef structsqlist;
void initlist(sqlist &l);/*細節在此不表*/
int locateelem(sqlist l,elemtype e);
int main()
/* 請在這裡填寫答案 */
答案:
int locateelem(sqlist l,elemtype e)
sqlist;
裁判測試程式樣例:
#include #include #define maxsize 5
typedef int elemtype;
typedef structsqlist;
void initlist(sqlist &l);/*細節在此不表*/
int listinsert(sqlist &l,int i,elemtype e);
int main()
else if(result==1)
l.elem[i-1] = e;
l.length++;
}return 1;
}
本題要求實現乙個函式,要求將順序表的第i個元素刪掉,成功刪除返回1,否則返回0;
函式介面定義:int listdelete(sqlist &l,int i);`
其中sqlist結構定義如下:
typedef structsqlist;
裁判測試程式樣例:
#include #include #define maxsize 5
typedef int elemtype;
typedef structsqlist;
void initlist(sqlist &l);/*細節在此不表*/
int listdelete(sqlist &l,int i);
int main()
else if(result==1)sqlist;
```### 裁判測試程式樣例:
```c++
#include #include #define maxsize 100
typedef int elemtype;
typedef struct
sqlist;
void initlist(sqlist &l);/*細節在此不表*/
int getgreater(sqlist l, elemtype e);
int main()
/* 請在這裡填寫答案 */
答案:
int getgreater(sqlist l, elemtype e)
} return num;
}
波波的資料結構 鍊錶
波波的資料結構屬實上的快,這裡將會寫些pta的解析,算是複習 預習,幫助我與大家期末不掛科 2 1線性表若採用鏈式儲存結構時,要求記憶體中可用儲存單元的位址 d a.必須是連續的 b.部分位址必須是連續的 c.一定是不連續的 d.連續或不連續都可以 解析 與順序表不同,可連續可不連續 2 2對線性表...
波波的資料結構 排序(1)
波波的資料結構屬實上的快,這裡將會寫些pta的解析,算是複習 預習,幫助我與大家期末不掛科 2 1對一組包含10個元素的非遞減有序序列,採用直接插入排序排成非遞增序列,其可能的比較次數和移動次數分別是 a.100,100 b.100,54 c.54,63 d.45,44 解析 他問的是可能的比較次數...
資料結構順序表的查詢 資料結構 2 1順序表
線性結構是資料結構中最基礎 最簡單的一種資料結構型別,其中最典型的就是線性表 具有 相同特性 的資料元素的 有限序列 相同特性 所有元素屬於同一資料型別 有限資料元素個數是有限的 序列資料元素由邏輯序號唯一確定 用邏輯序號來確定的特性使得線性表中可以有多個相同值的元素 線性表中所含元素的個數叫做線性...