定义一个栈,可以对栈进行“压入堆栈”、“弹出栈顶元素”、“清空堆栈”、“获取栈顶元素”等操作
发布网友
发布时间:2022-05-01 15:12
我来回答
共3个回答
热心网友
时间:2023-10-21 02:02
我不得不说你这代码存在很多的问题:
1.初试化栈的时候没有初始化栈底元素,这样导致这个变量全文就没用到。
2.scanf用法错误,scanf("%d",e);少了&符号。
3.str是一个字符型,不能存下字符串,如需用到,应该是char *str;str = malloc(100);最后释放空间。
4.初始化栈的功能不是消灭栈空间,clear这错误。这应该为free掉申请的栈空间。
5.exit,top等等不是字符,而是字符串。应用“”。如果想是字符应该只有一个字符。如‘E’,‘T’代表“exit”,和“top”.
6.字符串的比较用strcmp或者strncmp函数,字符之间才可以用=。
7.小问题:函数写了int的返回值后,应该每个分支都能有返回值才不会有警告。
也许还有没看见的,你可以自己再慢慢调试一下吧
热心网友
时间:2023-10-21 02:02
1:
int GetTop(sqstack s, elemtype *e)
改为
int GetTop(sqstack *s, elemtype *e)
2:if(str=='clear')
改为
if(str=='c')
scanf函数好好看看
3:
指针引用搞搞清楚
4:
.......
热心网友
时间:2023-10-21 02:02
if(str=='clear')//你先把你程序里边的字符比较更改一下吧....str是char又不是字符串
//怎么和"字符串"比较呢?
热心网友
时间:2023-10-21 02:02
我不得不说你这代码存在很多的问题:
1.初试化栈的时候没有初始化栈底元素,这样导致这个变量全文就没用到。
2.scanf用法错误,scanf("%d",e);少了&符号。
3.str是一个字符型,不能存下字符串,如需用到,应该是char *str;str = malloc(100);最后释放空间。
4.初始化栈的功能不是消灭栈空间,clear这错误。这应该为free掉申请的栈空间。
5.exit,top等等不是字符,而是字符串。应用“”。如果想是字符应该只有一个字符。如‘E’,‘T’代表“exit”,和“top”.
6.字符串的比较用strcmp或者strncmp函数,字符之间才可以用=。
7.小问题:函数写了int的返回值后,应该每个分支都能有返回值才不会有警告。
也许还有没看见的,你可以自己再慢慢调试一下吧
热心网友
时间:2023-10-21 02:02
1:
int GetTop(sqstack s, elemtype *e)
改为
int GetTop(sqstack *s, elemtype *e)
2:if(str=='clear')
改为
if(str=='c')
scanf函数好好看看
3:
指针引用搞搞清楚
4:
.......
热心网友
时间:2023-10-21 02:02
if(str=='clear')//你先把你程序里边的字符比较更改一下吧....str是char又不是字符串
//怎么和"字符串"比较呢?
热心网友
时间:2023-10-21 02:02
我不得不说你这代码存在很多的问题:
1.初试化栈的时候没有初始化栈底元素,这样导致这个变量全文就没用到。
2.scanf用法错误,scanf("%d",e);少了&符号。
3.str是一个字符型,不能存下字符串,如需用到,应该是char *str;str = malloc(100);最后释放空间。
4.初始化栈的功能不是消灭栈空间,clear这错误。这应该为free掉申请的栈空间。
5.exit,top等等不是字符,而是字符串。应用“”。如果想是字符应该只有一个字符。如‘E’,‘T’代表“exit”,和“top”.
6.字符串的比较用strcmp或者strncmp函数,字符之间才可以用=。
7.小问题:函数写了int的返回值后,应该每个分支都能有返回值才不会有警告。
也许还有没看见的,你可以自己再慢慢调试一下吧
热心网友
时间:2023-10-21 02:02
1:
int GetTop(sqstack s, elemtype *e)
改为
int GetTop(sqstack *s, elemtype *e)
2:if(str=='clear')
改为
if(str=='c')
scanf函数好好看看
3:
指针引用搞搞清楚
4:
.......
热心网友
时间:2023-10-21 02:02
if(str=='clear')//你先把你程序里边的字符比较更改一下吧....str是char又不是字符串
//怎么和"字符串"比较呢?