c语言建立空链表,我不知道错在哪里了!!编译,连接都没问题,但是执行的时候就自动关闭了。
#include<stdio.h>#include<malloc.h>#defineSTACK_INIT_SIZE10#defineNull0#defineSTACKIN...
# include <stdio.h>
# include <malloc.h>
# define STACK_INIT_SIZE 10
# define Null 0
# define STACKINCREMENT 10
typedef struct
{
int * base;
int * top;
int stacksize;
}sqstack;
Initstack(sqstack s)
{
s.base=(int * )malloc(STACK_INIT_SIZE * sizeof(int));
if(s.base==Null) printf("error");
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
}
push(sqstack s)
{
char a;
if(s.top-s.base>=s.stacksize)
{
s.base=(int * )realloc(s.base,(s.stacksize+STACKINCREMENT) * sizeof(int));
if(s.base==Null) printf("error");
s.top=s.base+s.stacksize;
s.stacksize=s.stacksize+STACKINCREMENT;
}
scanf("%c",&a);
* s.top=a;
* s.top++;
}
pop(sqstack s)
{
char a;
if(s.top==s.base) printf("error");
a=* s.top;
printf("%c",a);
* s.top--;
}
void main ()
{
int i;
sqstack s;
Initstack(s);
printf("请输入10个字符");
for(i=0;i<10;i++) push(s);
for(i=10;i>0;i--) pop(s);
}
麻烦各位高手帮帮忙了 ,谢谢了!万分感激!! 展开
# include <malloc.h>
# define STACK_INIT_SIZE 10
# define Null 0
# define STACKINCREMENT 10
typedef struct
{
int * base;
int * top;
int stacksize;
}sqstack;
Initstack(sqstack s)
{
s.base=(int * )malloc(STACK_INIT_SIZE * sizeof(int));
if(s.base==Null) printf("error");
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
}
push(sqstack s)
{
char a;
if(s.top-s.base>=s.stacksize)
{
s.base=(int * )realloc(s.base,(s.stacksize+STACKINCREMENT) * sizeof(int));
if(s.base==Null) printf("error");
s.top=s.base+s.stacksize;
s.stacksize=s.stacksize+STACKINCREMENT;
}
scanf("%c",&a);
* s.top=a;
* s.top++;
}
pop(sqstack s)
{
char a;
if(s.top==s.base) printf("error");
a=* s.top;
printf("%c",a);
* s.top--;
}
void main ()
{
int i;
sqstack s;
Initstack(s);
printf("请输入10个字符");
for(i=0;i<10;i++) push(s);
for(i=10;i>0;i--) pop(s);
}
麻烦各位高手帮帮忙了 ,谢谢了!万分感激!! 展开
1个回答
展开全部
注意下面的程序在C++环境下才行,因为用到了引用,如果是C的环境,就要用到指针参数了:
# define STACK_INIT_SIZE 10
# define Null 0
# define STACKINCREMENT 10
typedef struct
{
int * base;
int * top;
int stacksize;
}sqstack;
void Initstack(sqstack &s)
{
s.base=(int * )malloc(STACK_INIT_SIZE * sizeof(int));
if(s.base==Null) printf("error");
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
}
void push(sqstack &s)
{
char a;
if(s.top-s.base>=s.stacksize)
{
s.base=(int * )realloc(s.base,(s.stacksize+STACKINCREMENT) * sizeof(int));
if(s.base==Null) printf("error");
s.top=s.base+s.stacksize;
s.stacksize=s.stacksize+STACKINCREMENT;
}
scanf("%c",&a);
* s.top=a;
s.top++;
}
void pop(sqstack &s)
{
char a;
if(s.top==s.base) printf("error");
s.top--;
a=* s.top;
printf("%c",a);
}
void main ()
{
int i;
sqstack s;
Initstack(s);
printf("请输入10个字符");
for(i=0;i<10;i++) push(s);
for(i=10;i>0;i--) pop(s);
}
# define STACK_INIT_SIZE 10
# define Null 0
# define STACKINCREMENT 10
typedef struct
{
int * base;
int * top;
int stacksize;
}sqstack;
void Initstack(sqstack &s)
{
s.base=(int * )malloc(STACK_INIT_SIZE * sizeof(int));
if(s.base==Null) printf("error");
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
}
void push(sqstack &s)
{
char a;
if(s.top-s.base>=s.stacksize)
{
s.base=(int * )realloc(s.base,(s.stacksize+STACKINCREMENT) * sizeof(int));
if(s.base==Null) printf("error");
s.top=s.base+s.stacksize;
s.stacksize=s.stacksize+STACKINCREMENT;
}
scanf("%c",&a);
* s.top=a;
s.top++;
}
void pop(sqstack &s)
{
char a;
if(s.top==s.base) printf("error");
s.top--;
a=* s.top;
printf("%c",a);
}
void main ()
{
int i;
sqstack s;
Initstack(s);
printf("请输入10个字符");
for(i=0;i<10;i++) push(s);
for(i=10;i>0;i--) pop(s);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询