读书人

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

发布时间: 2012-02-22 19:36:55 作者: rapoo

高分求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

读书人网 >C++

热点推荐