标题:“定义类模板实现队列的基本操作,要求队列的数据结构采用静态数组。”请高 ...
只看楼主
wuxia111111
Rank: 2
等 级:论坛游民
帖 子:32
专家分:60
注 册:2012-11-18
结帖率:75%
已结贴  问题点数:20 回复次数:4 
“定义类模板实现队列的基本操作,要求队列的数据结构采用静态数组。”请高手看一下对吗?功能完善吗?并解释一下啊!谢谢
//定义类模板实现队列的基本操作,要求队列的数据结构采用静态数组。


#include <iostream.h>
template <class T>
class quene   
{    T q[3];//存放队列中数据
    int head,tail;
    public:
    quene()
    {    for(int i=0;i<3;i++) q[i]=0;
        head=0;    tail=0;
       }
    void in_quenen(T x)//从尾部插入队列
    {    if((tail+1)%3==head){cout<<"the quene is full"<<endl; return;}
        q[tail]=x;tail=(tail+1)%3;    }
    void out_quenen()//从头开始出队列
    {    if(head==tail){cout<<"the quene is empty"<<endl;return;}
        cout<<q[head];   
        head=(head+1)%3;}
};

   
void main()
{    quene<int> q;
    q.in_quenen(4);
    q.in_quenen(6);
    q.in_quenen(6);
    q.out_quenen();
    cout<<endl;
    q.out_quenen();
    cout<<endl;
}
搜索更多相关主题的帖子: head include public return 
2012-12-13 00:02
mmmmmmmmmmmm
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:8
帖 子:388
专家分:1809
注 册:2012-11-2
得分:10 
看一下

我们的目标只有一个:消灭0回复!
while(1)
++money;
2012-12-13 09:14
crystall
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:184
专家分:809
注 册:2012-12-1
得分:10 
回复 楼主 wuxia111111
这段代码,你入队列是3个元素,出队列只有2个元素.
程序代码:
#include "stdafx.h"

#include<stdio.h>

#include <iostream.h>
template <class T>
class quene  
{    T q[3];//存放队列中数据
    int head,tail;
    public:
    quene()
    {    for(int i=0;i<3;i++) q[i]=0;
        head=0;    tail=0;
       }
    void in_quenen(T x)//从尾部插入队列
    {    if((tail+1)%3==head){cout<<"the quene is full"<<endl; return;}
        q[tail]=x;tail=(tail+1)%3;    }
    void out_quenen()//从头开始出队列
    {    if(head==tail){cout<<"the quene is empty"<<endl;return;}
        cout<<q[head];   
        head=(head+1)%3;}
};

   
void main()
{    quene<int> q;
    q.in_quenen(4);
    q.in_quenen(6);
    q.in_quenen(6);
    q.out_quenen();
    cout<<endl;
    q.out_quenen();
    cout<<endl;
    q.out_quenen();
    cout<<endl;
}
2012-12-13 10:51
crystall
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:184
专家分:809
注 册:2012-12-1
得分:0 
回复 3楼 crystall
程序代码:
带模版的

#include <iostream.h>

template <class T>
class CNode
{
public:
    CNode(const T Data)
    {
        m_Data = Data;
        m_pNext = NULL;
    }

    //下一个结点
    CNode* m_pNext;

    //当前数据
    T m_Data;
};

template <class T>
class CQuene  
{
private:
    CNode<T>* m_pHead;     //头结点
    CNode<T>* m_pTail;     //尾结点
    int          m_nCount;    //结点总个数
public:
    CQuene()
    {   
        m_pHead = m_pTail = NULL;
        m_nCount= 0;
    }

    void Clear()
    {
        CNode<T>* pTempNode = m_pHead;
               
        while(pTempNode)
        {
            CNode<T>* pDelNode = pTempNode->m_pNext;
           
            if (pTempNode)
            {
                delete pTempNode;
               
                pTempNode = pDelNode;
            }
        }
       
        m_pHead = m_pTail = NULL;
       
        m_nCount = 0;
    }

    //尾部插入结点
    void AddTail(const T Data)
    {
        CNode<T>* pCurNode = new CNode<T>(Data);

        if (pCurNode == NULL)
        {
            return;
        }
       
        //表示还没有添加任何元素
        if (m_pTail == NULL)
        {
            m_pHead = m_pTail = pCurNode;
        }
        else
        {
            m_pTail->m_pNext = pCurNode;
            m_pTail = pCurNode;
        }
       
        m_nCount++;
    }

    //头部出队列
    void OutHead()
    {
        if(m_pHead != NULL)
        {
            CNode<T>* pCurNode = m_pHead;

            cout << pCurNode->m_Data << endl;

            m_pHead = pCurNode->m_pNext;

            m_nCount--;
        }       
    }
};

   
void main()
{   
    cout << "CQuene<int>: " << endl;

    CQuene<int> q;

    q.AddTail(4);
    q.AddTail(6);
    q.AddTail(6);

    q.OutHead();
    q.OutHead();
    q.OutHead();

    cout << "CQuene<char>: " << endl;

    CQuene<char> qChar;

    qChar.AddTail('m');
    qChar.AddTail('f');
    qChar.AddTail('c');

    qChar.OutHead();
    qChar.OutHead();
    qChar.OutHead();
}
2012-12-13 11:18
crystall
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:184
专家分:809
注 册:2012-12-1
得分:0 
程序代码:


//不带模板 队列中只可保存 int类型数据

#include "stdafx.h"

#include <iostream.h>

class CNode
{
public:
    CNode(const int Data)
    {
        m_Data = Data;
        m_pNext = NULL;
    }

    //下一个结点
    CNode* m_pNext;

    //当前数据
    int m_Data;
};


class CQuene  
{
private:
    CNode* m_pHead;     //头结点
    CNode* m_pTail;     //尾结点
    int          m_nCount;    //结点总个数
public:
    CQuene()
    {   
        m_pHead = m_pTail = NULL;
        m_nCount= 0;
    }

    void Clear()
    {
        CNode* pTempNode = m_pHead;
               
        while(pTempNode)
        {
            CNode* pDelNode = pTempNode->m_pNext;
           
            if (pTempNode)
            {
                delete pTempNode;
               
                pTempNode = pDelNode;
            }
        }
       
        m_pHead = m_pTail = NULL;
       
        m_nCount = 0;
    }

    //尾部插入结点
    void AddTail(const int Data)
    {
        CNode* pCurNode = new CNode(Data);

        if (pCurNode == NULL)
        {
            return;
        }
       
        //表示还没有添加任何元素
        if (m_pTail == NULL)
        {
            m_pHead = m_pTail = pCurNode;
        }
        else
        {
            m_pTail->m_pNext = pCurNode;
            m_pTail = pCurNode;
        }
       
        m_nCount++;
    }

    //头部出队列
    void OutHead()
    {
        if(m_pHead != NULL)
        {
            CNode* pCurNode = m_pHead;

            cout << pCurNode->m_Data << endl;

            m_pHead = pCurNode->m_pNext;

            m_nCount--;
        }       
    }
};

   
void main()
{
    CQuene q;

    q.AddTail(4);
    q.AddTail(6);
    q.AddTail(6);

    q.OutHead();
    q.OutHead();
    q.OutHead();
}
2012-12-13 11:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-390982-1-1.html




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

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