| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 696 人关注过本帖, 1 人收藏
标题:用栈怎么实现将十进制数n转换为m进制数,其中2<=m<=16;请问下面哪里错了啊 ...
只看楼主 加入收藏
罪恶的向往
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2012-3-11
结帖率:100%
收藏(1)
 问题点数:0 回复次数:1 
用栈怎么实现将十进制数n转换为m进制数,其中2<=m<=16;请问下面哪里错了啊啊啊啊?
用栈怎么实现将十进制数n转换为m进制数,其中2<=m<=16;
请问下面哪里错了啊啊啊啊?  

#include<iostream>
#include <assert.h>
using namespace std;

template<class ElemType>
struct LinkNode
{
    ElemType data;
    struct LinkNode *next;
};

template<class ElemType>
class LinkStack
{
private:
    LinkNode<ElemType> *next;
public:
    void InitStack();//构建(初始化)栈
    void ~LinkStack();//析构栈
    bool Empty();//判空
    void Push(ElemType e);//入栈
    void Pop();//出栈
    ElemType GetTop();//取栈顶元素
    void Clear();//清空
    int Length();//求栈长
    void Disp();//显示栈中元素
    void Convert(int n,int m)//进制转换
};
//初始化
template<class ElemType>
void LinkStack<ElemType>::initStack()
{
    head=new LinkNode<ElemType>;
    head->next=0
}
//析构
template<class ElemType>
void LinkStack<ElemType>::~LinkStack()
{
    LinkNode *p=head;
    *q=head->next;
    while(q!=NULL)
    {
        free(p);
        p=q;
        q=p->next;
    }
    free(p);
}
//判空
template<class ElemType>
bool LinkStack<ElemTpye>::Empty()
{
    return(head->next==NULL);
}
//入栈
template<class ElemType>
void LinkStack<ElemType>::Push(ElemType e)
{
    LinkNode<ElemType> *newNode=new LinkNode<ElemType>;
    newNode->e;
    newNode->next=head->next;
    head->next=newNode;
}
//出栈
template<class ElemType>
void LinkStack<ElemType>::Pop()
{
    assert(head->next);
    LinkNode<ElemType> *deleteNode=head->next;
    head->next=deleteNode->next;
    delete deleteNode;
}
//取栈顶元素
template<class ElemType>
ElemType LinkStack<ElemType>::GetTop()
{
    assert(head->next);
    return head->next->data;
}
//清空
template<class ElemType>
void LinkStack<ElemType>::Clear()
{
    LinkNode<ElemType> *p=head->next;
    *q=p->next;
    while(q!=NULL)
    {
        free(p);
        p=q;
        q=p->next;
    }
    free(p);
}
//求栈长
template<class ElemType>
int LinkStack<ElemType>::Length()
{
    int count=0;
    LinkNode *p=head->next;
    while(p!=0)
    {
        count++;
        p=p->next;
    }
    return count;
}
//显示栈
template<class ElemType>
void LinkStack<ElemType>::Disp()
{
    LinkNode *p=head->next;
    while(p!=0)
    {
        cout<<p->data<<" ";
        p=p->next;
    }
    cout<<endl;
}
//十进制数n转换成m进制数(2<=m<=16)
template<class ElemType>
void LinkStack<ElemType>::Convert(int n,int m)
{
    assert(m<2||m>16);
    LinkStack s;
    InitStack(s);
    while(n!=0)
    {
        Push(ElemType n%m);
        n=n/m;
    }
    cout<<"转换后的数是:";
    while(Empty(s))
    {
        int x=GetTop(s),y;
        if(x<10)
            cout<<x;
        else
            y=x-10+'A';
            cout<<y;
    }
    cout<<endl;
}
搜索更多相关主题的帖子: void class private include public 
2012-03-22 17:36
fan1
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-5-23
收藏
得分:0 
这是使用顺序栈,完成M进制到N进制的转换么?   
2012-05-23 17:09
快速回复:用栈怎么实现将十进制数n转换为m进制数,其中2<=m<=16;请问下面哪里错 ...
数据加载中...
 
   



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

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