#include
#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(\ {
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(\ 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(\ 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(\ return OK; }
int main() {
S_LinkList s; int m; do{
tishi();
scanf(\ 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; }