免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1035 | 回复: 4
打印 上一主题 下一主题

敬爱的大虾们:帮我看看吧!  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-23 11:32 |只看该作者 |倒序浏览
一个题目要求如下:用数组实现链表类,开始时,数组容量为100,每当溢出时当前容量时就将容量加100.

(错误较多哦)我的实现如下:
//功能:数据结构(用数组实现链表)
//头文件Linked.h
template<class T>;
class Linked
{
public:
    void push_front(const T& newItem);  //装入一个数据元素
        long size() const {return m_iFront;}   //返回现有的数据元素个数
        void pop_front();       //弹出一个数据元素
        T back_value(int);

protected:
        int m_iFront;                    //用来保存元素个数
        T* m_pArray;                   //数组首地址指针
    int m_iArraySize;               //数组大小
};

#include "Linked.h"

Linked::Linked()
{
       
        m_iArraySize=100;
        m_pArray=new T[100];
        m_iFront=0;
}


//实现文件Linked.cpp
void Linked::push_front(const T& newItem)
{
        if((m_iFront<>;0)&&(m_iFront%100==0))    //此处判断是否溢出
        {
                m_iArraySize=m_iArraySize+100;
                T* tpArray=new T[m_iArraySize];
               
                for(i=0;i<m_iFront;i++)
                {
                        tpArray=m_pArray;
                }

                delete [] m_pArray;
                m_pArray=tpArray;
                m_pArray[m_iFront]=newItem;
                m_iFront++;
        }
        else
        {
                m_pArray[m_iFront]=newItem;
                m_iFront++;
        }
}

void Linked::pop_front()
{
        m_iFront--;
}

T Linked::back_value(int j)
{
        return m_pArray[j];
}


//测试文件MY.cpp
#include<iostream.h>;
#include"Linked.h"
void main()
{
        Linked<int>; test;
        for (int i=0;i<103;i++)
        {
                test.push_front(i);
        }

        test.pop_front();

        for (i=0;i<102;i++)
        {
                cout<<test.back_value(i)<<" ";
        }
}

论坛徽章:
0
2 [报告]
发表于 2005-06-23 11:41 |只看该作者

敬爱的大虾们:帮我看看吧!

不好意思啊,从VC拷贝过来以后,格式不太好了,见谅!

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2005-06-23 14:21 |只看该作者

敬爱的大虾们:帮我看看吧!

模板不会用的话还是要多看书
Link.h
  1. //功能:数据结构(用数组实现链表)
  2. //头文件Linked.h
  3. template<class T>;
  4. class Linked
  5. {
  6. public:
  7.         Linked(){ m_iArraySize=100; m_pArray=new T[100]; m_iFront=0; }
  8.         ~Linked() {delete []m_pArray;}
  9.         void push_front(const T& newItem);  //装入一个数据元素
  10.         long size() const {return m_iFront;}   //返回现有的数据元素个数
  11.         void pop_front();       //弹出一个数据元素
  12.         T back_value(int);
  13.        
  14. protected:
  15.         int m_iFront;                    //用来保存元素个数
  16.         T* m_pArray;                   //数组首地址指针
  17.         int m_iArraySize;               //数组大小
  18. };

  19. template<class T>;
  20. void Linked<T>;::push_front(const T& newItem)
  21. {
  22.         if((m_iFront != 0)&&(m_iFront%100==0))    //此处判断是否溢出
  23.         {
  24.                 m_iArraySize=m_iArraySize+100;
  25.                 T* tpArray=new T[m_iArraySize];
  26.                
  27.                 for(int i=0;i<m_iFront;i++)
  28.                 {
  29.                         tpArray[i]=m_pArray[i];
  30.                 }
  31.                
  32.                 delete [] m_pArray;
  33.                 m_pArray=tpArray;
  34.                 m_pArray[m_iFront]=newItem;
  35.                 m_iFront++;
  36.         }
  37.         else
  38.         {
  39.                 m_pArray[m_iFront]=newItem;
  40.                 m_iFront++;
  41.         }
  42. }

  43. template<class T>;
  44. void Linked<T>;::pop_front()
  45. {
  46.         m_iFront--;
  47. }

  48. template<class T>;
  49. T Linked<T>;::back_value(int j)
  50. {
  51.         return m_pArray[j];
  52. }

复制代码

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2005-06-23 14:22 |只看该作者

敬爱的大虾们:帮我看看吧!

还出来个<>;,不等于在C++里是!=

  1. //测试文件MY.cpp
  2. #include "Linked.h"
  3. #include<iostream.h>;
  4. void main()
  5. {
  6.         Linked<int>; test;
  7.         for (int i=0;i<103;i++)
  8.         {
  9.                 test.push_front(i);
  10.         }
  11.        
  12.         test.pop_front();
  13.        
  14.         for (i=0;i<102;i++)
  15.         {
  16.                 cout<<test.back_value(i)<<" ";
  17.         }
  18. }
复制代码

论坛徽章:
0
5 [报告]
发表于 2005-06-23 17:16 |只看该作者

敬爱的大虾们:帮我看看吧!

再问一个小问题:上述模板的实现部分,可不可以单独作为一个文件Linked.cpp,而定义部份就为Linked.h,为什么分开以后,就编译失败呢?非得搞到一个头文件里面吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP