第三章作業
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...