作者pthread (QQ)
看板Examination
标题[考题] 程式语言/98身心障碍
时间Tue Mar 12 14:53:51 2013
五、桌上有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;
// }
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.246.201.24
1F:→ pthread:是自己脑残,没有把stack初始化 03/12 14:57
2F:→ GLTY:自问自答? 参考程式码如原po所写的吗@@? 03/12 15:00
3F:→ pthread:刚刚突然想到,等写完我再分享程式码 03/12 15:02