您的位置:首页 > 其它

考研系列一-线性表类(顺序存储)

2015-10-29 18:56 375 查看
一个线性表的类:

#include <fstream>
#include <iostream>
#include <cstring>
#include <cstdlib>

using namespace std;

#define N 100
enum Status{success,fail,fatal,range_error,overflow};

class List{
private:
char *list;
int len;

public:
List(char *tlist=""){
list=new char
;
strcpy(list,tlist);//初始化
len=strlen(list);
}
~List(){
delete list;
}
void listClear(){//销毁
list[0]='\0';
len=0;
}
bool listEmpty(){//判空
return len==0;
}
int listSize(){//求长度
return len;
}
Status listRetrieve(int pos,char &elem){//取指定位置元素
if(pos>=0&&pos<len){
elem=list[pos];
return success;
}else   return range_error;
}
Status listLocate(char elem,int &pos);//按值查找
Status listInsert(int pos,char elem);//插入
Status listRemove(int pos);//删除
Status listPrior(int pos,char &elem);//求前驱
Status listNext(int pos,char &elem);//求后继
};

int main(){
//freopen("D:\\input.in","r",stdin);
//freopen("D:\\output.out","w",stdout);

return 0;
}
Status List::listLocate(char elem,int &pos){
for(int i=0;i<len;i++){
if(list[i]==elem){
pos=i;
return success;
}
}
return fail;
}
Status List::listInsert(int pos,char elem){
if(len==N)     return overflow;
if(pos<0||pos>len)  return range_error;
for(int i=len;i>pos;i--)    list[i]=list[i-1];
list[pos]=elem;
len++;
return success;
}
Status List::listRemove(int pos){
if(pos<0||pos>=len)  return range_error;
for(int i=pos;i<len-1;i++)    list[i]=list[i+1];
len--;
return success;
}
Status List::listPrior(int pos,char &elem){
return listRetrieve(pos-1,elem);
}
Status List::listNext(int pos,char &elem){
return listRetrieve(pos+1,elem);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: