队列 句句分析 精辟解释 有图

</pre><pre code_snippet_id="505570" snippet_file_name="blog_20141102_3_3508855" name="code" class="cpp">
 
 
顺序栈,即栈的顺序存储结构是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈项元素在顺序栈中的位置。


#include "stdio.h"//包含头文件,就是编译时候把stdio.h中的内容替换到这个位置。
struct stack//定义结构体stack
{
 int length;//定义整型变量length
 struct data *top;//定义data类型的指针变量top
};
struct data//定义data结构体
{
 char c;//定义字符变量c
 struct data *next;//定义data类型指针变量next
};

struct stack *InitStack()//定义函数initstack,函数返回值是stack类型的指针
{
 struct stack *p;//定义stack指针p
 p=(struct stack *)malloc(sizeof(struct stack));//给p分配内存空间,空间大小正好够保存一个stack数据
 p->length=0;//给p指向的内存空间赋值
 p->top=NULL;//给p指向的内存空间赋值
 return p;//返回p的值
}

Push(struct stack *p,char a)//定义函数,函数带两个参数指针p和字符a
{
 struct data *t;//定义data类型指针t
 t=(struct data *)malloc(sizeof(struct data));//给t分配内存空间
 t->next=p->top;//给t指向的data型内存空间赋值
 p->top=t;//把t的地址保存到p指向的内存空间中的一个变量保存起来
 t->c=a;//给t指向的data型内存空间赋值
 p->length++;//p指针指向的结构体变量中的length变量+1
 return 0;//返回0
}

Pop(struct stack *p,char *a)//定义函数,带两个参数:指针p和字符指针a
{
 struct data *t;//定义指针t
 t=p->top;//把p中的top变量赋给t
 p->top=t->next;//改变p中的top变量值为t中next变量的值
 *a=t->c;//改变函数第二个参数的值为t中c变量的值
 free(t);//释放t指向的内存空间
 p->length--;//p中的length变量-1
 return 0;//返回0
}
char change(int n)//定义函数,带1个参数,n
{
 if(n>9)return 'A'+n-10;//判断,如果n>9则返回英文字母表中对应的英文字母.
 return n+'0';//否则返回0
}

main()//入口函数
{
 int n,val;//定义整数n
 char c;//字符c
 struct stack *p;//stack类型指针p
 p=InitStack();//执行函数initstack,返回值给p
 printf("请输入十进制数:");  //屏幕输出  请输入十进制数:
 scanf("%d",&n);//从键盘输入一个整数,给n
 printf("请输入要转换的进制:");
 scanf("%d",&val);  //从键盘输入一个整数,给val

printf("结果:");
 while(n>0)  //循环,如果n大于0则继续执行,否则跳出循环
 {
  c=change(n%val);  //执行change函数,返回值给c
  n/=val;
  Push(p,c);//执行push函数
 }
 while(p->length!=0)//循环,如果p中保存的length变量不等于0则继续,否则跳出
 {
  Pop(p,&c);  //执行pop函数
  printf("%c",c); //输出c变量中保存的字符
 }
 printf("\n");//换行
 return 0;//返回0
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄人软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值