#include
#include
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef int Status;
typedef int SElemType;
typedef struct node{
SElemType data;
struct node *next;
}SLnode,*SLinkList;
typedef struct {
SLinkList top,base;
int len;
}S_LinkList;
Status Build_S(S_LinkList &S)
{
int x;
SLinkList p,q;
printf("请输入数据,以-1结束:\n");
S.top=(SLinkList )malloc(sizeof(SLnode));
S.base=(SLinkList )malloc(sizeof(SLnode));
S.top->next=S.base;
q=S.base;
S.len=0;
while(scanf("%d",&x),x!=-1)
{
p=(SLinkList )malloc(sizeof(SLnode));
p->data=x;
S.top->next=p;
p->next=q;
q=p;
S.len++;
}
q=S.top->next;
while(q!=S.base)
{
printf("%d ",q->data);
q=q->next;
}
return OK;
}
void tishi()
{
printf("所有操作如下:\n");
printf("(1)采用链式存储实现栈的初始化操作。\n"); printf("(2)采用链式存储实现栈的入栈操作。\n"); printf("(3)采用链式存储实现栈的出栈操作。\n"); printf("(-1)退出\n");
printf("请选择:");
}
Status Push_S(S_LinkList &S)
{
int e;
printf("请输入要压入的元素:");
scanf("%d",&e);
SLinkList p,q;
q=S.top->next;
p=(SLinkList )malloc(sizeof(SLnode));
p->data=e;
S.top->next=p;
p->next=q;
q=p;
S.len++;
return OK;
}
Status Pop_S(S_LinkList &S)
{
SLinkList p;
p=S.top->next;
if(p!=S.base)
printf("%d\n",p->data);
return OK;
}
int main()
{
S_LinkList s;
int m;
do{
tishi();
scanf("%d",&m);
switch(m)
{
case 1:
Build_S(s);
break;
case 2:
Push_S(s);
break; case 3:
Pop_S(s); break; }
}while(m!=-1); return 0; }
#include
#include
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef int Status;
typedef int SElemType;
typedef struct node{
SElemType data;
struct node *next;
}SLnode,*SLinkList;
typedef struct {
SLinkList top,base;
int len;
}S_LinkList;
Status Build_S(S_LinkList &S)
{
int x;
SLinkList p,q;
printf("请输入数据,以-1结束:\n");
S.top=(SLinkList )malloc(sizeof(SLnode));
S.base=(SLinkList )malloc(sizeof(SLnode));
S.top->next=S.base;
q=S.base;
S.len=0;
while(scanf("%d",&x),x!=-1)
{
p=(SLinkList )malloc(sizeof(SLnode));
p->data=x;
S.top->next=p;
p->next=q;
q=p;
S.len++;
}
q=S.top->next;
while(q!=S.base)
{
printf("%d ",q->data);
q=q->next;
}
return OK;
}
void tishi()
{
printf("所有操作如下:\n");
printf("(1)采用链式存储实现栈的初始化操作。\n"); printf("(2)采用链式存储实现栈的入栈操作。\n"); printf("(3)采用链式存储实现栈的出栈操作。\n"); printf("(-1)退出\n");
printf("请选择:");
}
Status Push_S(S_LinkList &S)
{
int e;
printf("请输入要压入的元素:");
scanf("%d",&e);
SLinkList p,q;
q=S.top->next;
p=(SLinkList )malloc(sizeof(SLnode));
p->data=e;
S.top->next=p;
p->next=q;
q=p;
S.len++;
return OK;
}
Status Pop_S(S_LinkList &S)
{
SLinkList p;
p=S.top->next;
if(p!=S.base)
printf("%d\n",p->data);
return OK;
}
int main()
{
S_LinkList s;
int m;
do{
tishi();
scanf("%d",&m);
switch(m)
{
case 1:
Build_S(s);
break;
case 2:
Push_S(s);
break; case 3:
Pop_S(s); break; }
}while(m!=-1); return 0; }