读书人

帮忙看个数据结构的题目多谢啦

发布时间: 2013-10-24 18:27:24 作者: rapoo

帮忙看个数据结构的题目,谢谢啦,在线等
题目是:
1.参照教材编写一个程序,实现链栈的各种基本运算,并设计一个主程序完成如下功能:
(1)初始化栈s;
(2)判断栈s是否非空;
(3)依次进栈元素s,o,f,t,w,a,r,e;
(4)判断栈s是否非空;
(5)输出栈长度;
(6)输出从栈顶到栈底元素;
(7)输出出栈序列;
(8)判断栈s是否非空;
(9)释放栈


我写了这个C程序,怎么运行不起来,好像死循环了,求大神帮忙看看
#include <stdio.h>
#include <malloc.h>
#include<stdlib.h>

#define OK 1
#define ERROR 0

typedef struct SLNode{
char data;
struct SLNode *next;
}SLNode,* SLink;

typedef struct Stack
{
SLink top;
int length;
}STACK,LinkStack;


int InitStack_LS( LinkStack &S){ //初始化
S.top=NULL;
S.length=0;
return OK;
printf("已初始化!\n");
}
void StackEmpty(LinkStack &S){//判断栈s是否非空
if(&S==NULL){
printf("空栈!\n");
}else{
printf("非空栈!\n");
}

}
int Push(LinkStack &S,char e){ //入栈
SLink p;
p=new SLNode;
p->data=e;
p->next=S.top;
S.top=p;
S.length++;
return OK;
}

int Pop(LinkStack &S,char e){ //出栈
e=S.top->data;
LinkStack *p;
*p=S;
S.top=S.top->next;
delete p;
return OK;
}

void main(){
LinkStack *S;
char e;
int i;
InitStack_LS(*S);
StackEmpty(*S);
for(i=0;i<9;i++){
printf("请输入第%d个入栈的字母:",i+1);
scanf("%c",&e);
Push(*S,e);
}
printf("已全部入栈!\n");
printf("此链栈的长度为:",S->length);
printf("\n");
for(i=0;i<9;i++){ //输出栈
int f=Pop(*S,e);
printf("%d\t%c\n",i+1,f);
}
StackEmpty(*S); //判断栈是否为空
free(S); //销毁栈
}
[解决办法]
楼上的代码已经给你测试通过了,注意46,49,54行给你改了
[解决办法]

bool StackEmpty(LinkStack &S){ //判断栈s是否非空
if(S.top==NULL){
printf("空栈!\n");
}else{
printf("非空栈!\n");
}
return S.top == NULL;
}

读书人网 >C语言

热点推荐