| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1171 人关注过本帖
标题:经验和教训(和大家讨论)(1)(堆栈和链表问题)
只看楼主 加入收藏
zhtmark
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2005-3-25
收藏
 问题点数:0 回复次数:11 
经验和教训(和大家讨论)(1)(堆栈和链表问题)

我最近在学堆栈和链表,在编程时发现的问题,写如下: //堆栈的基本操作与应用练习(数据的进制转换) //首先由用户输入两个整数m.n然后将十进制n转换为m进制数,并显示在屏幕上 //要求和说明: //1.基本操作必须写成过程或函数,主函数只能调用他不准在主函数操作堆栈指针 //2.可处理任意进制数 //3.m的取值范围是236

#include"stdio.h" #include"stdlib.h"

struct node //这是定义的结构体(栈的基本结构) { int d; struct node *next; };

/////////////////////////////////分函数////////////////////////////////

struct node * duizhan(struct node *top,int x) //堆栈开辟和存储 { struct node *p; p=(struct node*) malloc(sizeof(struct node)); //开辟空间把首地址给p p->d=x; //新的空间的值域部分赋键盘输入值 if(top==NULL) top=p; else { p->next=top; top=p; } return(top); }

struct node * chuli(int m,int n) //处理数据并存入堆栈 { struct node *top=NULL; int i=0; int k; for(;n!=0;i++) { k=n%m; n=(n-k)/m; top=duizhan(top,k); } return(top); }

void pp(struct node *top) { int n=0; struct node *q,*p; p=top; while(p!=NULL) //用循环的方式打印线性单链表 { n++; //'n'为换行变量 printf("%3d",p->d); if(n%10==0) printf("\n"); //换行语句 //q=p; p=p->next; //释放q所指向的空间(一个结构体变量) } } ///////////////////////////////////////////////////////////////////////

///////////////////////////////主函数/////////////////////////////////// void main(void) { int m,n; printf("请输入想处理的数(0-32767):"); scanf("%d",&n); printf("请输入想把他处理成几进制的数(2-236):"); scanf("%d",&m); pp(chuli(m,n)); //打印并处理函数 } //////////////////////////////////////////////////////////////////////// 但是在编译运行后有问题,说内存出现问题. 改如下: //堆栈的基本操作与应用练习(数据的进制转换) //首先由用户输入两个整数m.n然后将十进制n转换为m进制数,并显示在屏幕上 //要求和说明: //1.基本操作必须写成过程或函数,主函数只能调用他不准在主函数操作堆栈指针 //2.可处理任意进制数 //3.m的取值范围是236

#include"stdio.h" #include"stdlib.h"

struct node //这是定义的结构体(栈的基本结构) { int d; struct node *next; };

///////////////////////////////分函数////////////////////////////////

struct node * duizhan(struct node *top,int x) //堆栈开辟和存储 { struct node *p; p=(struct node*) malloc(sizeof(struct node)); //开辟空间把首地址给p p->d=x; //新的空间的值域部分赋键盘输入值 if(top==NULL) { top=p; p->next=NULL; } else { p->next=top; top=p; } return(top); }

struct node * chuli(int m,int n) //处理数据并存入堆栈 { struct node *top=NULL; int i=0; int k; for(;n!=0;i++) { k=n%m; n=(n-k)/m; top=duizhan(top,k); } return(top); }

void pp(struct node *top) { int n=0; struct node *q,*p; p=top; while(p->next!=NULL) //用循环的方式打印线性单链表 { n++; //'n'为换行变量 printf("%3d",p->d); if(n%12==0) printf("\n"); //换行语句 q=p; p=p->next; free(q); //释放q所指向的空间(一个结构体变量) } } ///////////////////////////////////////////////////////////////////////

///////////////////////////////主函数/////////////////////////////////// void main() { int m=0,n=0; printf("请输入想处理的数(0-32767):"); scanf("%d",&n); printf("请输入想把他处理成几进制的数(2-236):"); scanf("%d",&m); pp(chuli(m,n)); //打印并处理函数 printf("\n"); } //////////////////////////////////////////////////////////////////////// 就是链表最后的指针,指向不对造成的.请大家发表看法.

搜索更多相关主题的帖子: 链表 堆栈 教训 经验 
2005-03-29 14:42
想你的天空
Rank: 2
等 级:新手上路
威 望:5
帖 子:610
专家分:0
注 册:2004-12-30
收藏
得分:0 
太长了, 不想看

2005-03-31 21:51
zhtmark
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2005-3-25
收藏
得分:0 
是 ,我发现这个问题了,写长了大家都不看了.你看看那些红字吧,希望有用,以后我少写点.哈哈.

zhtmark QQ:451361060
2005-04-01 11:01
happyocean
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-3-24
收藏
得分:0 
chuli(int m,int n)中的

for(;n!=0;i++)是错的吧

2005-04-01 20:07
sogood
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-3-27
收藏
得分:0 
以下是引用想你的天空在2005-3-31 21:51:34的发言: 太长了, 不想看
读程是一种提升自己编程能力的训练

2005-04-02 01:37
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
慢着,你红字的部分想表明什么?你没写变量代表,看了红字不明白,还是要看全文
2005-04-02 02:13
zhtmark
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2005-3-25
收藏
得分:0 
红色部分是我改过之后的.我错的地方就在红色字部分,
for(;n!=0;i++)是错的吧
这句没错,就是把第一句话放在外面了写了.

zhtmark QQ:451361060
2005-04-03 17:01
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 
好啊.兄弟。经典.....i服you

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-04-04 13:38
sogood
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-3-27
收藏
得分:0 
不过我想问下堆栈和栈是同一个概念吗??

2005-04-04 20:59
zhtmark
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2005-3-25
收藏
得分:0 
这是我的不对.我们学习的就是栈.我听人家说的,应该不是一个东西,我说的不对,至于具体的概念,还需要看看书.我这里说的就是"先进后出,后进先出"的栈.

zhtmark QQ:451361060
2005-04-06 14:24
快速回复:经验和教训(和大家讨论)(1)(堆栈和链表问题)
数据加载中...
 
   



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

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