線性表 棧 佇列作業題

2021-10-02 04:40:03 字數 4405 閱讀 3515

(1)資料在計算機儲存器內表示時,實體地址和邏輯位址相同並且是連續的,稱之為 ( c )。

a.儲存結構 b.邏輯結構 c.順序儲存結構 d.鏈式儲存結構

(2) 用鍊錶表示線性表的優點是( b )。

a.便於隨機訪問 b.便於進行插入和刪除操作

c.占用的儲存空間較順序表少 d.元素的物理順序與邏輯順序相同

(3)已知單鏈表的每個結點包括乙個指標域next,它指向該結點的後繼結點。現要將指標 q 指向的新結點插入到指標 p 指向的結點之後,下面的操作序列中正確的是( c )。

a . q = p.next ; p.next = q.next ;

b . p.next = q.next ; q = p.next ;

c . q.next = p.next; p.next = q ;

d . p.next = q ; q.next = p.next ;

(4)若長度為 n 的線性表採用順序儲存結構,訪問其第 i 個元素的演算法時間複雜度為( a )。

a. 0 ( l ) b. 0 ( n ) c. 0 ( n2 ) d. 0 ( log2n )

(5)若長度為 n 的線性表採用順序儲存結構,刪除其第 i 個元素的演算法時間複雜度為( b )。

a. 0 ( l ) b. 0 ( n ) c. 0 ( n2 ) d. 0 ( log2n )

(6) 帶頭結點的單鏈表l為空的條件是( c )

a. l!=null b. l==null c. l.next==null d. l.next==l

(7) 將長度為m的單鏈表接在長度為n的單鏈表之後的演算法的時間複雜度為( b ):

a.o(m+n) b.o(n) c.o(m) d.(m*n)

(8)有 6 個元素按 6 、 5 、 4 、 3 、 2 、 1 的順序進棧,進棧過程中可以出棧,則以下可能的出棧序列是( b )。

a . 1 、 4 、 3 、 5 、 2 、 6 b . 6 、 5 、 4 、 3 、 2 、 l c . 3 、 l 、 4 、 2 、 6 、 5 d . 3 、 6 、 5 、 4 、 2 、 l

(9)以下不屬於棧的基本運算的是( b )。

a.刪除棧頂元素 b.刪除棧底元素 c.判斷棧是否為空 d.將棧置為空棧

(10)若順序迴圈佇列長度為m, front 為當前隊頭元素的前乙個位置,rear為隊尾元素的位置,假定隊中元素的個數總是小於 m ,則當前隊中元素的個數為( d )。

a. rear-front b. m + front - rear

c. m + rear -1 d. (rear–front +m) % m

(11)若順序迴圈佇列長度為n,其隊頭和隊尾指標分別用front和 rear 表示,則判斷隊滿的條件是( c )。

a. ( rear - 1 ) % n = =front b. ( front + 1 ) % n = = rear

c. ( rear + 1 ) % n = =front d. ( front - l ) % n = = rear

(12)鏈棧與順序棧相比有1個明顯的優點,( b )。

a.插入操作更加利便 b.通常不會出現棧滿的情況

c.不會出現棧空的情況 d.刪除操作更加利便

(13)設有乙個空佇列,若進入佇列的序列為 1 , 2 , 3 , 4 ,則合法的出隊序列是( d )。

a. 3 , 2 , 4 , 1 b. 4 , 2 , 3 , l

c. 4 , 3 , 2 , 1 d. l , 2 , 3 , 4

(14) 設乙個有序的單鏈表中有n個結點,現要求插入乙個新結點後使得單鏈表仍然保持有序,則該操作的時間複雜度為( b )。

a.o(1) b. o(n) c.o(n2) d.o(log2n)

(15) 設帶頭節點鏈式棧中結點的結構為(data, next),且head是指向該棧的指標。若想在棧頂插入乙個由指標s所指的結點,則應執行操作( b )。

a. s.next=head; head.next = s;

b. s.next = head.next; head.next = s;

c. s.next = head; head = s;

d. s.next = head; head = head .next;

(1)順序儲存的線性表可以實現隨機訪問。( √ )

(2)線性表的鏈式儲存結構優於順序儲存。( × )

(3)棧是運算受限制的線性表。( √ )

(4)鍊錶的每個結點都恰好包含乙個指標域。( × )

(5)如果某資料結構的每乙個元素最多只有乙個直接前驅,則其必為線性表( × )

(6)進棧操作時,必須判斷棧是否已滿。 (× )

(7)不管棧採用何種儲存結構,只要不為空,就可以任意的刪除資料元素。( × )

(8)線性表若採用鏈式儲存表示時所有儲存結點之間的位址可連續也可不連續( √ )

(9) 在乙個迴圈佇列q中,判斷隊滿的條件為(q. front+1) % maxsize == q. rear( × )

(10) 在對鏈佇列作出隊操作時,不會改變front指標的值。( × )

使用順序儲存方式儲存的普通佇列存在___假上溢_______的問題,所以在實際應用時多用首尾相連的___迴圈鍊錶_______。

3.設有乙個順序棧s,元素a1, a2, a3, a4, a5, a6依次進棧,如果6個元素的出棧順序為a2, a3, a4, a6, a5, a1,則順序棧的容量至少應為__3________

迴圈佇列的最大儲存空間為maxsize=6,採用少用乙個元素空間以有效地判斷棧空或棧滿,若隊頭指標front=4,當隊尾指標rear= __3___時隊滿,佇列中共有____5____個元素。

5、乙個演算法應具有有窮性、確定性、可行性、輸入和___輸出

1、請給出下面程式的輸出結果。(stack為棧,queue為佇列)

void unknown ( queue q )

while

(!s.isempty ())

}

10 9 8 7 6 5 4 3 2 1

該題有地方不嚴謹,按題意應該為i=q.dequeue ();每次出佇列返回出隊元素的值並賦值給i,然後再將i進棧,然後出棧輸出也應該是i=s.pop()。 則結果應該是10 9 8 7 6 5 4 3 2 1。如果出佇列和出棧i都未賦值,則結果應該是 11 11 11 11 11 11 11 11 11 11。因迴圈執行完成i的值為11,進佇列進了10個11,出佇列自然也是10個11

2.請補充下面的演算法:

// 從鍊錶中刪除所有值比min小及比max大的元素

void

unknown3

(linknode head,

int min,

int max)

else

}}

本題解析:注意要求是刪除所有值比min小及比max大的元素,當p.data >= min && p.data <= max,則是在最小值和最大值之間的時候(可以等於最小值和最大值),則q=p;p=p.next;將p指向下乙個結點。else其它情況,則是比min小或是比max大時,則刪除p結點。注意q為p的前驅節點,所以應該是q.next=p.next;p=q.next等於刪除了p結點,並且讓p指向了下一結點。

1.鏈佇列的資料結構形式如下,請實現鏈佇列的入隊和出隊操作函式。front、rear分別是鏈佇列的隊頭、隊尾結點(10分)

public

class

qnode

}public

class

linkqueue

qnode p = front;

// p指向隊頭結點

front = p.next;

// front指向p的後繼

if(p == rear)

// 如被刪結點也是隊尾結點

rear = null;

// rear置空

return

true

;// 返回出隊成功標誌;

}public

void

enqueue

(int e)

else

}}

2、listnode包含next、data公有成員,可直接通過p.next讀取下一結點,p.data讀取資料,請編寫乙個函式演算法,實現從乙個非遞減有序鍊錶中刪除所有值相同的多餘元素.該有序鍊錶的頭結點為la,(演算法提示,定義兩個節點p和q,初始q指向頭結點,p指向第乙個結點,q為p的前驅,當p結點不為空,則判斷p結點的資料是否與q相同,如果相同,則刪除p結點)(10分)

public

static

void

deletesamenode

(listnode la)

else

}}

線性表 棧 佇列

輔助定義 define maxsize 5 define ok 0 define error 1 typedef int selemtype typedef int status 棧 順序 鏈式 相關結構體定義 順序棧 typedef struct sqstack 順序棧共享空間 typedef s...

線性表 棧,佇列

1.3 棧 棧是一種先進後出的資料結構。只能在一端進行插入和刪除操作的特殊線性表。將資料進入棧稱為壓棧,資料出去稱為彈棧。壓棧 public void push t t 彈棧 public t pop 讓首結點指向第乙個結點的下乙個結點 head.next oldfirst.next 元素個數 1 ...

線性表 棧和佇列

線性表是n個元素的有限序列。表示方法有兩種,一種是順序表示,一種是鏈式表示。順序表示即採用一組位址連續的儲存單元依次儲存線性表的資料元素,通常採用陣列來實現 鏈式表示是用一組任意的儲存單元儲存線性表的資料元素,每一結點包含兩個域 資料域和指標域,資料域儲存資料,指標域儲存後繼儲存位址資訊,實現為 i...