关于C++中类的问题······
各位大虾们,本人刚学数据结构,想用VC6.0中的类编写线性表的顺序实现,结果发现了几个问题:1.类中以public定义的数据能否被主函数引用?
2.return和exit后返回的 OK ,OVERFLOW等是怎么用的?是不是要先用#define宏定义下?
return 1 和exit(-1)运行后有什么表现?
3.对类中的数据如何用构造函数初始化:
a.无输入值时?
b.有输入值时?
希望讲详细点,我对此很混乱········谢谢
4.如果有一个模板的话会更好·····
以下是我编的程序,运行到没什么太大问题,但是不是很满意:
a.希望能随自己意愿编写不同类型的表····
b.结构体SqList L是在主函数中定义的,要是能在类中直接定义就好了·····
c.其他的倒没想到什么,希望大家帮我多看看提提意见····
//线性表的顺序印象实现
#include<iostream.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINCREAMENT 10
typedef struct
{
int * elem;
int length;
int listsize;
int elemnum; //代替书中的ListLength函数
}SqList;
class List
{
public:
InitList(SqList L); //建立一个空表,并返回基地址
DestroyList(SqList L); //删除表,并释放空间
ClearList(SqList L); // 清空表
ListEmpty(SqList L); //调查表是否为空,实则返回1
GetElem(SqList L, int i, int *t); //获得表内某个元素的值
LocateElem(SqList L, int e, int *q(int t,int e)); // 找到某个元素的位置
PriorElem(); //找到某个元素的前驱
NextElem(); //找到某个元素的后继
ListInsert(); //在表中插入元素
ListDelete(); //删除某个元素
ListTraverse(); //对表中元素依次调用函数*visit
};
int List::InitList(SqList L)
{
//暂时只能是整型
//一次只能建一个
L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem) exit(0);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return 1;
}
int List::DestroyList(SqList L)
{
int *p=L.elem;
while(L.listsize--) free(p++);
return 1;
}
int List::ClearList(SqList L)
{
int i=0;
int *q=L.elem;
for( ; i<L.elemnum ; i++)
{
*q=0;
q=q+1;
}
return 1;
}
int List::ListEmpty(SqList L)
{
int i=0;
int *q=L.elem;
for( ; i<L.listsize ; i++)
{
if(*(q++)) break;
}
if(i==L.listsize) return 0;
else return 1;
}
int List::GetElem(SqList L, int i, int *t)
{
if(ListEmpty( L )) *t=*(L.elem+i);
return ( *t );
}
int List::LocateElem(SqList L, int e, int *q(int t,int e))
{
int i=0;
int t=*(L.elem);
for( ; i<L.elemnum ; i++)
{
if(q(t,e)) break;
}
if(i==L.elemnum) return 0;
else return ( i );
}
void main()
{
extern SqList L;
List Text;
Text.InitList( L);
cout<<Text.ListEmpty(L);
}
再次感谢各位大侠