- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数制转换(栈的应用)
实验二一、 实验目的掌握栈的基本操作:初始化栈、判栈为空、出栈、入栈等运算。二、实验要求1. 认真阅读和掌握本实验的算法。2. 上机将本算法实现。 3. 保存程序的运行结果,并结合程序进行分析。三、实验内容利用栈的基本操作实现将任意一个十进制整数转化为R进制整数算法为:1、定义栈的顺序存取结构2、分别定义栈的基本操作(初始化栈、判栈为空、出栈、入栈等)3、定义一个函数用来实现上面问题:十进制整数X和R作为形参初始化栈只要不为重复做下列动作将入栈 =X/R
(4)只要栈不为空重复做下列动作栈顶出栈输出栈顶元素十进制整数转化为R进制整数/*
栈(综合) 时间------2012 3 16
*/
# include stdio.h
# include malloc.h
# include stdlib.h
typedef struct node
{
int data;
struct node *next;
}NODE , *PNODE;
typedef struct stack
{
PNODE top; //!!!!节点指针类型,用于保存当前栈顶节点的地址(top 和 bottom 均为栈所需成员)
PNODE bottom; //!!!节点指针类型,用于保存栈内最后一个节点的下一个无实际含义节点的地址,操作中,此指针无需变更
}STACK , *PSTACK;
void push_stack(PSTACK ps,int val);
void init_stack(PSTACK ps);
void travel_stack(PSTACK ps);
bool is_empty(PSTACK ps);
void pop_stack(PSTACK ps,int * val);
void swap_stack(PSTACK ps,int val,int R);
int main(void)
{
STACK s;
int X;
int R;
init_stack(s); //对 s 的两个参数进行初始化(top 和 bottom)
printf(请输入你想转换的数X和想转换成的进制R:);
scanf(%d%d,X,R);
swap_stack(s,X,R);
travel_stack(s);
return 0;
}
void init_stack(PSTACK ps)
{
ps-top = (PNODE)malloc(sizeof(NODE)); //动态分配了一个NODE类型节点,并把首地址赋给ps-top(即由ps-top指向)
if (NULL == ps-top)
{
printf(动态内存分配失败!\n);
exit(-1);
}
else
{
ps-top-next = NULL; //
ps-bottom = ps-top; //刚开始栈顶指针和尾指针指向同一个节点(即栈里最后一个节点的下一个无实际含义的节点),并将该节点指针域清空
}
return;
}
void push_stack(PSTACK ps,int val)
{
PNODE p = (PNODE)malloc(sizeof(NODE)); //创建新结点,并把结点首地址赋给P
p-data = val; //把 输入值 赋给新结点的数据域
p-next = ps-top; //上一次栈顶地址由p-top保存的,现在赋给新栈顶 p-next(p-top保存的是结点整体的地址,而p的指针域p-next也是保存结点整体的地址)
ps-top = p; //再把 栈顶指针指向新栈顶结点(新节点地址赋给栈顶指针)
return;
}
void travel_stack(PSTACK ps) //遍历输出函数
{
PNODE p = ps-top; //工作指针先指向 栈顶
while(p != ps-bottom) //当工作指针 = 尾指针 时,遍历结束
{
printf(%d,p-data);
p = p-next; //工作指针 逐步下移
}
printf(\n);
return;
}
void pop_stack(PSTACK ps,i
您可能关注的文档
最近下载
- 2024年中考数学压轴题型(浙江专用)压轴题06 相似相关压轴题(教师版).docx VIP
- 统编版语文三年级上册习作猜猜他是谁 公开课一等奖创新教学设计.docx VIP
- PSP版波斯王子启示游戏攻略.doc VIP
- 2025年中考数学压轴题专练:二次函数综合(面积问题)(含解析).docx VIP
- 2009~2012社保缴费基数(全国).pdf
- 2025年中考数学压轴题专练:二次函数与圆综合.docx VIP
- 轻金属冶金学12镁冶金学第二讲热还原法原理与过程.ppt VIP
- 2023 CCF 非专业级软件能力认证 CSP-S 第二轮认证 提高级.pdf
- 广东省房屋建筑工程竣工验收技术资料统一用表(2024版).pdf
- 江苏省苏州外国语学校2024届高三下学期5月月考英语试题试卷含解析.doc VIP
文档评论(0)