求助,有代码,不知道为什么运行不了
c++吧
全部回复
仅看楼主
level 1
狂一户 楼主
#include <iostream>
using namespace std;
typedef char ElemType;
typedef struct linknode
{    
     ElemType data;                 //数据域
     struct linknode *next;         //指针域
} LiStack;                         //链栈类型定义
void InitStack(LiStack *&s)     //初始化链栈s;
{
     s=(LiStack *)malloc(sizeof(LiStack));
     s->next=NULL;
}
void ClearStack(LiStack *&s)    //释放栈
{
     LiStack *p=s->next;
     while (p!=NULL)
     {    
         free(s);
         s=p;
         p=p->next;
     }
     free(s);     //s指向尾结点,释放其空间
}
int StackLength(LiStack *s)     //判断长度
{
     int i=0;
     LiStack *p;
     p=s->next;
     while (p!=NULL)
     {    
         i++;
         p=p->next;
     }
     return(i);
}
int StackEmpty(LiStack *s)     //判断是否为空
{
     return(s->next==NULL);
}
void Push(LiStack *&s,ElemType e)     //进栈
{
     LiStack *p;
     p=(LiStack *)malloc(sizeof(LiStack));
     p->data=e;
     p->next=s->next;         //插入*p结点作为第一个数据结点
     s->next=p;
}
int Pop(LiStack *&s,ElemType &e)     //出栈
{
     LiStack *p;
     if (s->next==NULL)         //栈空的情况
         return 0;
     p=s->next;                 //p指向第一个数据结点
     e=p->data;
     s->next=p->next;
     free(p);
     return 1;
}
int GetTop(LiStack *s,ElemType &e)     //读取栈顶元素
{
     if (s->next==NULL)         //栈空的情况

2010年11月02日 09点11分 1
level 1
狂一户 楼主
         return 0;
     e=s->next->data;
     return 1;
}
void DispStack(LiStack *s)       //输出元素
{
     LiStack *p=s->next;
     while (p!=NULL)
     {    
         printf("%c ",p->data);
         p=p->next;
     }
     printf("\n");
}
void   main()
{
     LiStack *s;
     ElemType e;
     Push(s,'a');
     Push(s,'b');
     Push(s,'c');
     Push(s,'d');
     Push(s,'e');
     if(StackEmpty(s))
         cout<<"为空"<<endl;
     else
         cout<<"不为空"<<endl;
     cout<<"长度为:"<<StackLength(s)<<endl;
     DispStack(s);
     GetTop(s,e);
     cout<<e<<'\t';
     GetTop(s,e);
     cout<<e<<'\t';
     GetTop(s,e);
     cout<<e<<'\t';
     GetTop(s,e);
     cout<<e<<'\t';
     GetTop(s,e);
     cout<<e<<'\t';
     if(StackEmpty(s))
         cout<<"为空"<<endl;
     else
         cout<<"不为空"<<endl;
     ClearStack(s);
}

2010年11月02日 09点11分 2
level 1
狂一户 楼主
回复:3楼
谢谢 自己解决了
2010年11月06日 00点11分 4
level 11
回复:4楼
恩,建议你以后能够把错误的信息也贴出来,那么那些大牛们才知道是什么错误,对症下药,效率高!同样,以后随时欢迎你来C++吧和MFC吧!
2010年11月06日 04点11分 5
level 1
狂一户 楼主
回复:5楼
嗯    感动中
2010年11月19日 12点11分 6
1