幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2211|回复: 3

[通用编程] 问下栈的问题

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2007-8-30 16:09:11 | 显示全部楼层 |阅读模式
  1. #include<stdio.h>
  2. #define maxsize 100
  3. typedef struct
  4. {
  5.     char stack[maxsize];
  6.     int top;
  7. }stacktype;
  8. void initstack(stacktype *s)      //  初始化栈
  9. {
  10.     s->top=-1;
  11. }
  12. void push(stacktype *s,char x)   //  入栈
  13. {
  14.     if(s->top==maxsize)
  15.         printf("this is overflow\n");
  16.     else
  17.     {
  18.         s->top++;
  19.         s->stack[s->top]=x;
  20.     }
  21. }
  22. void pop(stacktype *s)        //  出栈
  23. {
  24.     if(s->top==-1)
  25.         printf("down overflow\n");
  26.     else
  27.         s->top--;
  28. }
  29. char gettop(stacktype *s)    //  取栈顶元素
  30. {
  31.     if(s->top==-1)
  32.         printf("this is null\n");
  33.     else
  34.         return(s->stack[s->top]);
  35. }
  36. int empty(stacktype *s)      //   判断是否为空
  37. {
  38.     if(s->top==-1)
  39.         return 1;
  40.     else
  41.         return 0;
  42. }
  43. void display(stacktype *s)         //  显示栈中元素
  44. {
  45.     int i;
  46.     printf("middle element :");
  47.     for(i=s->top;i>=0;i--)
  48.         printf("%c ",s->stack[i]);
  49.     printf("\n");
  50. }
  51. void main()
  52. {
  53.     stacktype *st;
  54.     printf("build a inn\n");
  55.     initstack(st);
  56.     printf("inn null:%d\n",empty(st));
  57.     printf("please insert element\n");
  58.     push(st,'a');
  59.     push(st,'b');
  60.     push(st,'c');
  61.     push(st,'d');
  62.     display(st);
  63.     printf("delete onetime\n");
  64.     pop(st);
  65.     printf("top element :%c\n",gettop(st));
  66.     printf("delete onetime\n");
  67.     pop(st);
  68.     display(st);
  69. }
复制代码
为什么会报错呢?但是运行是可以的??[s:3][s:3]
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

23

主题

218

帖子

2470

积分

⑥精研

积分
2470
发表于 2007-8-30 16:43:29 | 显示全部楼层
是st没有初始化吧,经典错误。
你只定义了一个stacktype指针,没有给它分配内存。
ONScripter for PSP/Windows中文版 http://blog.163.com/john_he_
回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2007-8-31 08:14:23 | 显示全部楼层
[s:3] 那是不是应该给个字符型的数组地址给它呢?
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
发表于 2007-8-31 08:50:22 | 显示全部楼层
stacktype *st=(stracktype*) malloc(sizeof(stacktype));
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-3 21:18 , Processed in 0.020848 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表