北理工資料結構作業

2022-06-06 14:45:03 字數 2281 閱讀 3080

第三章作業

1、 寫出下列程式段的輸出結果。

viod main ( )

printf(x);

}答:stack

2、 簡述下列演算法的功能(棧的元素型別selemtype為int)。

(1)ststus algo1(stack s)

for ( i=1; i<=n; i++ )

push(s, a[n]);

}答:實現棧中元素的逆置

(2)status algo2(stack s, int e)

while ( ! stackempty(t) )

pop (t, d);

push (s, d);

}}答:通過棧t的輔助刪除棧s中所有值為e的元素

3、 設有4個元素1、2、3、4依次進棧,而出棧操作可隨時進行(進出棧可任意交錯進行,但要保證進棧次序不破壞1、2、3、4的相對次序),請寫出所有可能的出棧次序。

答:共14種情況,順序如下:

1234,1243,1324,1342,1432,2134,2143,2314,2341,2431,3421,3241,3214,4321。

4、 寫出下列程式段的輸出結果(佇列中的元素型別qelemtype為char)。

viod main ( )

}答:cha

5、 簡述下列演算法的功能(棧和佇列的元素型別均為int)。

void algo3(queue &q)

while ( ! stackempty(s) )

}答:利用棧s將佇列q中的元素進行逆置。

6、 為了充分利用空間,將兩個棧共同儲存在長度為n的一維陣列中,共享陣列空間。設計兩個棧共享一維陣列的儲存表示方式,畫出示意圖。

答:設計兩個棧stack1和stack2共享陣列空間,stack1的棧底放在陣列的首端,stack2的棧底放在陣列的尾端,分別向兩個棧中儲存相應的元素,兩個棧的棧頂分別向陣列中間擴充套件。當總的儲存空間不大於陣列長度時,陣列空間將得到最大利用。

當兩個棧佔滿整個陣列空間時,這時兩個棧共享乙個長度為n的陣列空間,再向棧中放元素時會發生上溢。

實驗二1、簡單計算器。

請按照四則運算加、減、乘、除、冪(^)和括號的優先關係和慣例,編寫計算器程式。要求:

1 從鍵盤輸入乙個完整的表示式,以回車作為表示式輸入結束的標誌。

2 輸入表示式中的數值均為大於等於零的整數。中間的計算過程如果出現小數也只取整。

例如,輸入:4+2*5輸出:14

輸入:(4+2)*(2-10輸出:-48

程式如下:

#include<>

#include<>

#include<>

#define ok 1

#define error 0

#define overflow -2

#define stack_init_size 100 //儲存空間初始分配量

#define stackincrement 10 //儲存空間分配增量

typedef structsqstack1;

typedef structsqstack2;

int initstack1(sqstack1 &s)//initstack1

int initstack2(sqstack2 &s)//initstack2

char gettop1(sqstack1 s)//gettop1

int gettop2(sqstack2 s)//gettop2

int push1(sqstack1 &s,char e)

*return ok;

}//push1

int push2(sqstack2 &s,int e)

*return ok;

}//push2

int pop1(sqstack1 &s,char &e)//pop1

int pop2(sqstack2 &s,int &e)//pop2

char precede(char a,char b){//比較兩個相繼出現的運算子a和b間的優先順序關係

switch(a){

case '+':

switch(b){

case'+':return'>';break;

case'-':return'>';break;

case'*':return'<';break;

case'/':return'<';break;

case'(':return'<';break;

case')':return'>';break;

case'=':return'>';break;

《資料結構》作業

本課程作業由兩部分組成。第一部分為 客觀題部分 由選擇題組成,每題1分,共15分。第二部分為 主觀題部分 由簡答題和應用題組成,共15分。作業總分30分,將作為平時成績記入課程總成績。客觀題部分 一 選擇題 每題1分,共10題 1 順序儲存結構中資料元素之間的邏輯關係是由 表示的。a.線性結構 b....

資料結構作業

資料結構 課程設計報告 2014 2015學年第一學期 課程設計題目 設計學生姓名 所在系部名稱 計算機工程系 所在班級名稱 電腦科學2013 參加設計時間 課程設計課時 30 指導教師姓名 年月日第一題目 假設有兩個集合 a 和 b 分別用兩個線性表 la 和 lb 表示,即線性表中的資料元素即為...

資料結構作業

1 將順序表逆置,要求用最少的附加空間。2 從鍵盤讀入n個整數 公升序 請編寫演算法實現 1 createlist 建立帶表頭結點的單鏈表 include stdio.h typedef struct lnode定義結構體 int data struct lnode next lnode,linkl...