栈的链式存储结构

来源:百度知道 编辑:UC知道 时间:2024/05/11 18:10:48
那位高人帮小弟改一下错误 程序的功能是栈的建立、入栈、出栈
#include<stdio.h>
#define STACK_SIZE 10
#define INCREMENT 10
#define OVERFLOW 0
#define OK 1
#define ERROR 0
typedef struct node{
int data;
struct node *next;
}sqstack;
typedef struct{
int size;
sqstack *base;
sqstack *top;
}stack;

sqstack *s;
sqstack *p;
stack *q;

sqstack *creat(sqstack *s,int g){
int i,e;

s=malloc(sizeof(sqstack));
q->base=q->top=s;
printf("输入第1项: ");
scanf("%d",&e);
s->data=e;
for(i=2;i<=g;i++){
printf("输入第%d项: ",i);
scanf("%d",&e);
p=malloc(sizeof(sqstack));
p->data=e;
p->next=s;
s->next=s;
q->top=s;
}
}

sqstack *push(sqstack *s,int e){
s=s->next;
q->top=s;
s->data=e;
}

sqsta

int initstack(stack &s) 建堆栈
{
s.base=(char *)malloc(100*sizeof(char));
if(!s.base) exit(0);
s.top=s.base;
s.stacksize=100;
return 1;
}
int push(stack &s,char e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(char *)realloc(s.base,(s.stacksize+10)*sizeof(char));
if(!s.base) exit(0);
s.top=s.base+s.stacksize;
s.stacksize+=10;
}
*s.top++=e;
}

int pop(stack &s,char &e)
{
if(s.top==s.base) exit(0);
e=*--s.top;
return 1;
}
参考下

一错到底,无药可救