鱼C论坛

 找回密码
 立即注册
查看: 3076|回复: 3

关于栈的建立和操作请看红字的部分

[复制链接]
发表于 2011-8-12 10:14:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h
#include<malloc.h>
#define kaipi 100
typedef struct
{
        int *top;
        int *base;
        int chang;
}zhan;
int chushi(zhan *z)
        {
                z->base=(int *)malloc(kaipi*sizeof(int));
                        if(!z->base)
                        {
                                printf("开辟失败!日!空间怎么怎么快就用完了!垃圾PC赶快丢了吧买新的吧!!!");
                                return 0;
                        }
                        z->top=z->base;
                        z->chang=kaipi;
                        return 0;
        }
int jinzhan(zhan *z,int shu,int jin)
{
        if((z->top)-(z->base)==(z->chang))
        {
                printf("额!栈的空间已经用完了要开辟增加新的空间了!不然就要产出上溢了!我们还是让PC要增加新的空间吧O(∩_∩)O~!请输入要增加的空间大小!");
                int xin;
                scanf("%d",&xin);
                z->base=(int *)realloc(z->base,(shu+xin)*sizeof(int));
                if(!z->base)
                {
                        printf("开辟失败!日!空间怎么怎么快就用完了!垃圾PC赶快丢了吧买新的!!!");
                        return 0;
                }
                z->top=z->base+shu;
                z->chang=shu+xin;
        }
        while(shu)
        {
                *(z->top)=shu%jin;
                z->top++;//小甲鱼老师为什么我用C语言写进栈是z-top++而汇编却是SP偏移地址--;我就是想可不可以将汇编中栈地址不安从小到大,而是按从大到小。来实现C和汇编的栈操作统一啊
                         shu=shu/jin;
        }
        return 0;
}
int chuzhan(zhan *z)
{
        if(z->top==z->base)
        {
                printf("如果程序在运行就要产生下益了!!!还是让PC停止吧!!!O(∩_∩)O~");
                return 0;
        }
        while(z->top!=z->base)
        {
                if(*(--(z->top))<10)
                {
                        printf("%d",*(z->top));
                }
                else
                {
                        *(z->top)=*(z->top)-10+65;
                        printf("%c",*(z->top));
                }
        }
        printf("\n");
        free(z->base);
        return 0;
        }
void main()
{
int shu,jin;
zhan z;
printf("请输入你要转换的10进制数字");
scanf("%d",&shu);
printf("请输入你想转换的进制");
scanf("%d",&jin);
chushi(&z);
jinzhan(&z,shu,jin);
chuzhan(&z);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-12 10:19:56 | 显示全部楼层
发错版块了吧。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-12 10:34:17 | 显示全部楼层
汇编 和c语言可以同时应用??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-8-12 10:46:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-8 21:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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