| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 558 人关注过本帖
标题:栈-帮我看看我的代码为什么不对
只看楼主 加入收藏
TRUTH_2015
Rank: 2
等 级:论坛游民
帖 子:37
专家分:20
注 册:2015-5-13
结帖率:71.43%
收藏
已结贴  问题点数:20 回复次数:6 
栈-帮我看看我的代码为什么不对
#include<stdio.h>
#include<malloc.h>
typedef int elemtype;
typedef struct
{
  elemtype *top;
  elemtype *base;
  int stacksize;
}sqstack;

//对栈的初始化
void initstack(sqstack &L)
{
   L.base=(elemtype*)malloc(100*sizeof(elemtype));
   L.base=L.top;
   L.stacksize=100;
}

//压栈操作
void push(sqstack &L)
{
    elemtype e;
    printf("输入插入的值:\n");
    scanf("%d",&e);
    if(L.top-L.base>L.stacksize)
        printf("ERROR\n");
        *L.top=e;
        L.top++;
}


//出栈操作
void pop(sqstack &L)
{
    printf("压栈输出:\n");
 if(L.base==L.top)
     printf("ERROR\n");
 else
 {
     printf("%d\n",*L.top);
     L.top--;
 }
}

void main()
{
 sqstack A;
 int m,n,i;
 printf("Please choose:\n");
 printf("2:压栈3:出栈\n");
 initstack(A);
 printf("输入操作的次数:\n");
 scanf("%d",&n);
for(i=1;i<=n;i++)
{
    printf("输入进行的操作:\n");
 scanf("%d",&m);
 if(m>3 || m<2)
     printf("ERROR\n");
 else if(m==2)
    push(A);
 else  
     pop(A);
}
}
搜索更多相关主题的帖子: include 
2015-05-13 23:49
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:20 
咋个不对法

DO IT YOURSELF !
2015-05-14 08:47
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:0 
初始化有没有问题?malloc分配的空间好像没用到

程序代码:
void initstack(sqstack &L)
{
   L.base=(elemtype*)malloc(100*sizeof(elemtype));
   L.base=L.top;
   L.stacksize=100;
}

人有多懒,编程就有多难。
2015-05-14 09:52
TRUTH_2015
Rank: 2
等 级:论坛游民
帖 子:37
专家分:20
注 册:2015-5-13
收藏
得分:0 
各位辛苦了,我已经想出来了
#include<stdio.h>
#include<malloc.h>
typedef int elemtype;
typedef struct
{
  elemtype *top;
  elemtype *base;
  int stacksize;
}sqstack;

//对栈的初始化
void initstack(sqstack &L)
{
   L.base=(elemtype*)malloc(100*sizeof(elemtype));
   L.top=L.base;
   L.stacksize=100;
}

//压栈操作
void push(sqstack &L)
{
    elemtype e;
    printf("输入插入的值:\n");
    scanf("%d",&e);
    if(L.top-L.base>L.stacksize)
        printf("ERROR\n");
        *L.top=e;
        L.top++;
}


//出栈操作
void pop(sqstack &L)
{
    printf("压栈输出:\n");
 if(L.base==L.top)
     printf("ERROR\n");
 else
 {
     printf("%d\n",*(L.top-1));
     L.top--;
 }
}

void main()
{
 sqstack A;
 int m,n,i;
 printf("Please choose:\n");
 printf("2:压栈3:出栈\n");
 initstack(A);
 printf("输入操作的次数:\n");
 scanf("%d",&n);
for(i=1;i<=n;i++)
{
    printf("输入进行的操作:\n");
 scanf("%d",&m);
 if(m>3 || m<2)
     printf("ERROR\n");
 else if(m==2)
    push(A);
 else  
     pop(A);
}
}
原来的代码,编译没问题,运行有问题,
其实仔细思考之后是自己的一时手快,把 L.base=L.top;赋值搞反了
2015-05-14 13:15
LSASTA
Rank: 2
等 级:论坛游民
帖 子:11
专家分:11
注 册:2015-5-4
收藏
得分:0 
请问这是c的那部分类容啊?我是初学者,对c不怎么了解
2015-05-14 18:59
LGing
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:32
专家分:107
注 册:2015-3-15
收藏
得分:0 
回复 5楼 LSASTA
数据结构
2015-05-14 21:26
TRUTH_2015
Rank: 2
等 级:论坛游民
帖 子:37
专家分:20
注 册:2015-5-13
收藏
得分:0 
谢谢,大家的回复!
2015-06-11 18:49
快速回复:栈-帮我看看我的代码为什么不对
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020473 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved