首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-10-24 
帮忙看个数据结构的题目,谢谢啦,在线等题目是:1.参照教材编写一个程序,实现链栈的各种基本运算,并设计一个

帮忙看个数据结构的题目,谢谢啦,在线等
题目是:
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;
}

热点排行