- 论坛徽章:
- 0
|
一个题目要求如下:用数组实现链表类,开始时,数组容量为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)<<" ";
}
} |
|