程式語言/98身心障礙 - 考試

Table of Contents

五、桌上有N本書成一疊,當閱讀其中某本書的時候,會逐本將壓在該本書上的書照順
序由上而下的移開,並且按照移開的順序先將它們放在旁邊,然後取走想要看的書;
當閱讀完畢以後,會將剛才移開的書逐本逆向放回,並且將看完的書本放在最上面,
例如桌上有五本書:
書本 1
書本 2
書本 3
書本 4
書本 5
經過閱讀"書本 3"後放回之最終書本狀態變成
書本 3
書本 2
書本 1
書本 4
書本 5
請撰寫一段程式執行以上工作,不限程式語言:(25 分)
輸入:一個初始書本序列和一個閱讀書之序列
輸出:最終的書本狀態


目前的程式長這樣,不過printBook函數不能運作
是什麼原因~??

#include<iostream>
#define N 50

using namespace std;

struct Node{

int number;
char name[10];

};

struct Stack{

Node *stackpointer[N];
int sp;


};

struct Queue{

Node *queuepointer[N];
int rear;
int front;


};

int isempty(Stack *);
void push(Stack *,Node *);
void printBook(Stack *);


int main(){

Stack s;
Queue q;

Node *ptr=new Node;

strcpy(ptr->name,"書本5");
ptr->number=5;
push(&s,ptr);

ptr=new Node;
strcpy(ptr->name,"書本4");
ptr->number=4;
push(&s,ptr);

ptr=new Node;
strcpy(ptr->name,"書本3");
ptr->number=3;
push(&s,ptr);

ptr=new Node;
strcpy(ptr->name,"書本2");
ptr->number=2;
push(&s,ptr);

ptr=new Node;
strcpy(ptr->name,"書本1");
ptr->number=1;
push(&s,ptr);


printBook(&s);

system("pause");
return 0;

}



void push(Stack *p,Node *x){

p->sp++;
p->stackpointer[p->sp]=x;

}


Node* pop(Stack *p){

if(isempty(p))
cout<<"堆疊已空"<<endl;
else
return p->stackpointer[p->sp--];


}

int isempty(Stack *p){
if(p->sp==-1)
return 1;
else
return 0;
}


void printBook(Stack *p){

// for(int i=0;i<=p->sp;i++){
cout<<p->stackpointer[0]->number<<endl;

// }

}

--

All Comments

George avatarGeorge2013-03-15
是自己腦殘,沒有把stack初始化
Dora avatarDora2013-03-18
自問自答? 參考程式碼如原po所寫的嗎@@?
Frederic avatarFrederic2013-03-19
剛剛突然想到,等寫完我再分享程式碼