首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

高分求C++的数据结够有关问题,谁帮解决一下

2012-02-22 
高分求C++的数据结够问题,哪位高手帮解决一下1、有list(链表)及其节点结构如下,完成其迭代器定义。structlis

高分求C++的数据结够问题,哪位高手帮解决一下
1、有list(链表)及其节点结构如下,完成其迭代器定义。
struct   listnode
{int   data;
  listnode   *next;};
class   list{
    listnode   *first,*last;
    public:
listnode   *begin()   {return   first;}
listnode   *end(   )   {return   last;}
//…};
class   listiter{
    listnode   *p;
  public:
    listiter(   )     {p=0;}
    listnode   *   operator-> (   );
    listiter&   operator++(   );
    listiter     operator++(int   );
    };
2、利用map和stl算法设计一电话薄类,完成其成员函数定义。
class   telebook{
    map <string,long>   mymap;
    public:
    void   add(string&   name   ,long   number);   //添加纪录
    void   del(string&   name);//删除姓名为name的纪录
    long   find_number(string&   name);//   查找姓名为name的电话号码
    void   modify_num(string&   name   ,   long   number);//修改姓名为name的电话号码为number
    void   modify_name(string&   name1,   string&   name2);//修改姓名为name1的姓名    


3、设计Tstring类完成字符串操作。
class   Tstring{
  char   *ptr;
  int   length;
public:
    Tstring(const   char   *s);
    Tstring(const   Tstring&   sou);
    Tstring&   operator=(   const   Tstring&   sou);
      Tstring&   operator=(char   c);  
      ~   Tstring(   );}                  
4、虚函数机制是如何实现的?若基类定义了虚函数,如何通过基类的指针或引用访问派生内中新定义的虚函数?如有以下程序段,如何实现通过pa访问fun2函数,写出具体代码。
class     A   {
public:  
virtual   void   fun1(   );};
class     AB   {
public:  
virtual   void   fun2(   );};
int   main(   )
{   AB   abobj;
A*   pa=&abobj;


5、有一栈类,在栈空时元素出栈、栈满时元素入栈均会引发异常,请定义异常并完成成员函数定义。
const   int   maxsize=100;
class     stack{
      int     p[maxsize];
      int   n;
    public:
      void   push(int   x);
      void   pop(   );
        stack(   )     {n=-1;}
    };
6、定义类模板less_than,重载operator(   )完成比较两个数大小操作。定义该类模板针对const   char   *类型数据进行大小比较的全局特化版本和对普通指针进行大小比较的部分特化版本。
template <class   T>
class   less_than
    {     bool   operator(   )   (T   a,T   b);
}




[解决办法]
的确是作业,呵呵,贴一个5的:
/*========================================================
********************自定义的线性链表**********************
========================================================*/
#ifndef _MYLINESTACK_H_
#define _MYLINESTACK_H_

template <typename T>
class Stack
{
// LIFO 对象
public:
Stack(int MaxStackSize = 10);
~Stack() {delete [] stack;}
bool IsEmpty() const {return top == -1;}
bool IsFull() const {return top == MaxTop;}
T Top() const;
Stack <T> & Add(const T& x);


Stack <T> & Delete(T& x);
//-----------------------------------------------------
//自定义的异常处理类
public:
class NoMem:public std::exception
{
public:
virtual const char* what() const throw()
{
return "there is no memory! ";
}
};

class OutOfBounds:public std::exception
{
public:
virtual const char* what() const throw()
{
return "out of bound! ";
}
};


private:
int top; // 栈顶
int MaxTop; // 最大的栈顶值
T *stack; // 堆栈元素数组
};
//类定义结束
//----------------------

template <typename T>
Stack <T> ::Stack(int MaxStackSize)
{// Stack 类构造函数
MaxTop=MaxStackSize-1;
stack=new T[MaxStackSize];
top=-1;
}
//----------------------

template <typename T>
T Stack <T> ::Top() const
{// 返回栈顶元素
if(IsEmpty())
throw OutOfBounds();
else return stack[top];
}
//----------------------

template <class T>
Stack <T> & Stack <T> ::Add(const T& x)
{//添加元素x
if(IsFull()) throw NoMem();
stack[++top] = x;
return *this;
}
//----------------------

template <class T>
Stack <T> & Stack <T> ::Delete(T& x)
{// 删除栈顶元素,并将其送入x
if(IsEmpty()) throw OutOfBounds();
x=stack[top--];
return *this;
}
//-----------------------


#endif

热点排行