c++考试资料.docx
- 文档编号:23009268
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:27
- 大小:22.74KB
c++考试资料.docx
《c++考试资料.docx》由会员分享,可在线阅读,更多相关《c++考试资料.docx(27页珍藏版)》请在冰豆网上搜索。
c++考试资料
seqlist.h
#ifndefSEQLIST_H
#defineSEQLIST_H
#include
#include
#defineMaxSeqSize100
structSeqList//顺序表结构
{
Typedata[MaxSeqSize];
intsize;
};
voidSetList(SeqList*l);//构造函数。
intListSize(constSeqList*l);//求长。
intListEmpty(constSeqList*l);//判空。
intListFull(constSeqList*l);//判满。
TypeGetData(constSeqList*l,intid);//取值。
intFind(constSeqList*l,Typeitem);//查找。
voidReplace(SeqList*l,Typeitem,intid);//替换。
voidInsert(SeqList*l,Typeitem,intid);//定点插入。
voidInsertRear(SeqList*l,Typeitem);//尾插。
voidErase(SeqList*l,intid);//定点删除
voidClearList(SeqList*l);//清表。
将元素个数置0
voidSeqError(constchar*c);//错误信息报告
#endif
seqlist.cpp
voidSetList(SeqList*l)//构造函数。
给元素个数size赋初值0
{
l->size=0;
}
intListSize(constSeqList*l)//求长。
读取元素个数
{
return(l->size);
}
intListEmpty(constSeqList*l)//判空。
判断顺序表是否空
{
return(l->size==0);
}
intListFull(constSeqList*l)//判满。
判断顺序表是否满
{
return(l->size==MaxSeqSize);
}
TypeGetData(constSeqList*l,intid)//取值。
{
if(id<0||id>l->size-1)
SeqError("GetData:
Indexisoutofrange!
");
return(l->data[id]);
}
intFind(constSeqList*l,Typeitem)//查找。
{
for(inti=0;i
if(l->data[i]==item)
return(i);
return(-1);
}
voidReplace(SeqList*l,Typeitem,intid)//替换。
{
if(id<0||id>l->size-1)
SeqError("Update:
Indexisoutofrange!
");
l->data[id]=item;
}
voidInsert(SeqList*l,Typeitem,intid)//定点插入。
{
if(l->size==MaxSeqSize)
SeqError("Insert:
SeqListisfull!
");
if(id<0||id>l->size)
SeqError("Insert:
Indexisoutofrange!
");
for(inti=l->size-1;i>=id;i--)
l->data[i+1]=l->data[i];
l->data[id]=item;
l->size++;
}
voidInsertRear(SeqList*l,Typeitem)//尾插。
{
if(l->size==MaxSeqSize)
SeqError("InsertRear:
SeqListisfull!
");
l->data[l->size]=item;
l->size++;
}
voidErase(SeqList*l,intid)//定点删除。
{
if(l->size==0)
SeqError("Delete:
anemptylist!
");
if(id<0||id>l->size-1)
SeqError("Delete:
Indexisoutofrange!
");
for(inti=id+1;i
l->data[i-1]=l->data[i];
l->size--;
}
voidClearList(SeqList*l)//清表。
将元素个数置0
{
l->size=0;
}
voidSeqError(constchar*c)//错误信息处理函数
{
printf("%s",c);exit
(1);
}=
Main.cpp
#include
typedefcharType;
#include"seqlist.h"
voidmain(void)
{
SeqListL;
SetList(&L);
InsertRear(&L,'a');
InsertRear(&L,'d');
Insert(&L,'b',1);
inti=Find(&L,'d');
if(i!
=-1)
Replace(&L,'c',i);
Erase(&L,0);
intn=ListSize(&L);
for(i=0;i printf("%c\t",GetData(&L,i)); ClearList(&L); } seqlist_class.h #ifndefSEQLIST_CLASS_H #defineSEQLIST_CLASS_H #include #include constintMaxSeqSize=100; classSeqList { Typedata[MaxSeqSize]; intsize; voidError(char*c)const{cout< (1);}//错误信息报告 public: SeqList(void){size=0;}//缺省构造函数 intSize(void)const{return(size);}//取元素个数 boolEmpty(void)const{return(size==0);}//判空 boolFull(void)const{return(size==MaxSeqSize);}//判满 constType&GetData(intid)const;//取值 intFind(constType&item)const;//查找 voidReplace(constType&item,intid);//修改 voidInsert(constType&item,intid);//定位插入 voidInsertRear(constType&item);//尾插 voidErase(intid);//定位删除 voidClear(void){size=0;}//清表 }; #endif seqlist_class 这几项都在声明里 constType&SeqList: : GetData(intid)const//取值 { if(id<0||id>size-1) Error("GetData: Idoutofrange! "); return(data[id]); } intSeqList: : Find(constType&item)const//查找 { for(inti=0;i if(data[i]==item) return(i); return(-1); } voidSeqList: : Replace(constType&item,intid)//修改 { if(id<0||id>size-1) Error("Update: Idoutofrange! "); data[id]=item; } voidSeqList: : Insert(constType&item,intid)//定位插入 { if(size==MaxSeqSize) Error("Insert: SeqListfull! "); if(id<0||id>size) Error("Insert: Idoutofrange! "); for(inti=size-1;i>=id;i--) data[i+1]=data[i]; data[id]=item; size++; } voidSeqList: : InsertRear(constType&item)//后插 { if(size==MaxSeqSize) Error("InsertRear: SeqListfull! "); data[size]=item; size++; } voidSeqList: : Erase(intid)//定位删除 { if(size==0) Error("Delete: anemptylist! "); if(id<0||id>size-1) Error("Delete: Idoutofrange! "); for(inti=id+1;i data[i-1]=data[i]; size--; } 这两项都在声明里 Main.cpp #include typedefcharType; #include"seqlist.h" voidmain(void) { SeqListL; L.InsertRear('a'); L.InsertRear('d'); L.Insert('b',1); inti=L.Find('d'); if(i! =-1) L.Replace('c',i); L.Erase(0); intn=L.Size(); for(i=0;i cout< cout< L.Clear(); } str.h #ifndefSTR_H #defineSTR_H #include structString { char*str;intsize; }; voidSetString(String*s,constchar*c);//构造 voidFreeString(String*s);//析构 voidStrAssign(String*s,constString*cs);//将结构串cs赋值给结构串s voidCStrAssign(String*s,constchar*c);//将串c赋值给结构串s char*Char(String*s);//取C串指针 voidStrConcat(constString*s,constString*cs,String*w);//结构串s和cs连接为结构串w intStrCompare(constString*s,constString*cs);//两个结构串比较 voidSubString(constString*s,String*cs,intid,intcount); //从结构串s的下标id开始连续取count个字符组成结构串cs voidStrInsert(String*s,constString*cs,intid);//在结构串s的下标id插入结构串cs voidStrErase(String*s,intid,intcount); //从结构串s的下标id开始连续删除count个字符 voidGetStr(String*s);//串输入 voidPutStr(constString*s);//串输出 intFind(constString*s,charch,intstart);//从start开始查找ch charStrGetData(constString*s,intid);//返回下标id处的字符 intStrLength(constString*s);//求串长 intStrEmpty(constString*s);//判串空 voidClearString(String*s);//清为空串 voidStrError(constchar*c);//错误信息报告 #endif str.cpp #include #include #include"str.h" voidSetString(String*s,constchar*c)//构造 { s->size=strlen(c); s->str=(char*)malloc(s->size+1); if(s->str==NULL) StrError("SetString: overflow! "); strcpy(s->str,c); } voidFreeString(String*s)//析构 { free(s->str); } voidGetStr(String*s)//串输入 { charc[256]; gets(c); CStrAssign(s,c); } voidPutStr(constString*s)//串输出 { puts(s->str); } voidStrAssign(String*s,constString*cs) //将结构串cs赋值给结构串s { if(s->size! =cs->size) { free(s->str); s->size=cs->size; s->str=(char*)malloc(s->size+1); if(s->str==NULL) StrError("StrAssign: overflow! "); } strcpy(s->str,cs->str); } voidCStrAssign(String*s,constchar*c) //将串c赋值给结构串s { intn=strlen(c); if(s->size! =n) { free(s->str); s->size=n; s->str=(char*)malloc(s->size+1); if(s->str==NULL) StrError("CStrAssign: overflow! "); } strcpy(s->str,c); } char*Char(String*s)//取C串指针 { return(s->str); } voidStrConcat(constString*s,constString*cs,String*w)//结构串s和cs连接为结构串w { free(w->str); w->size=s->size+cs->size; w->str=(char*)malloc(w->size+1); if(w->str==NULL) StrError("StrConcat: overflow! "); strcpy(w->str,s->str); strcat(w->str,cs->str); } intStrCompare(constString*s,constString*cs)//两个结构串比较 { return(strcmp(s->str,cs->str)); } 对应c++中声明里的关系符运算 voidSubString(constString*s,String*cs,intid,intcount)//从结构串s的下标id开始连续取count个字符组成结构串cs { if(id<0) StrError("SubString: idillegal! "); if(id>s->size-1||count<=0) count=0; intleft=s->size-id; if(left>0&&count>left) count=left; free(cs->str); cs->size=count; cs->str=(char*)malloc(cs->size+1); if(cs->str==NULL) StrError("SubString: overflow! "); char*p=cs->str; char*q=s->str+id; for(inti=1;i<=count;i++) *p++=*q++; *p='\0'; } voidStrInsert(String*s,constString*cs,intid)//在结构串s的下标id插入结构串cs { if(id<0||id>s->size) StrError("StrInsert: idillegal! "); char*tmp=s->str; intn=s->size+cs->size; s->str=(char*)malloc(n+1); if(s->str==NULL) StrError("StrInsert: overflow! "); strcpy(s->str,tmp); free(tmp); char*p=s->str+s->size; char*q=s->str+n; intleft=s->size-id+1;//需要向后移动的字符包含结束符 for(inti=1;i<=left;i++) *q--=*p--; p=s->str+id; q=cs->str; while(*q! ='\0') *p++=*q++; s->size=n; } voidStrErase(String*s,intid,intcount)//从结构串s的下标id开始连续删除count个字符 { if(id>s->size-1||count<=0) return; if(id<0) StrError("Delete: idillegal! "); intleft=s->size-id; if(count>left) count=left; char*p=s->str+id; char*q=s->str+id+count; while(*q! ='\0') *p++=*q++; *p='\0'; s->size=strlen(s->str); char*tmp=s->str; s->str=(char*)malloc(s->size+1); if(s->str==NULL) StrError("StrDelete: overflow! "); strcpy(s->str,tmp); free(tmp); } intStrLength(constString*s)//求串长与 {c++ return(s->size);声 }明 intStrEmpty(constString*s)//判串空对 {应 return(s->size==0); } intFind(constString*s,charch,intstart)//从start开始查找ch { inti;char*p; if(start>s->size-1) return(-1); if(start<0) start=0; for(p=s->str+start,i=start;*p! ='\0';++p,++i) if(*p==ch) return(i); return(-1); } charStrGetData(constString*s,intid)//返回下标id处的字符 { if(id<0||id>s->size-1) StrError("StrGetData: Idillegal! "); return(*(s->str+id)); } voidClearString(String*s)//清为空串 { free(s->str); s->str=(char*)malloc(sizeof(char)); if(s->str==NULL) StrError("ClearString: overflow! "); *(s->str)='\0'; s->size=0; } voidStrError(constchar*c)//错误信息报告 { printf("%s",c); exit (1); } Main.cpp #include #include #include"str.h" voidmain(void) { StringW,H,S,A; SetString(&S,"");SetString(&A,""); SetString(&W,"work");SetString(&H,"hard"); StrConcat(&W,&H,&A); PutStr(&A); CStrAssign(&S,"study"); StrInsert(&A,&S,4); puts(Char(&A)); StrErase(&A,0,4); printf("%s\n",Char(&A)); FreeString(&S);FreeString(&A); FreeString(&W); FreeString(&H); } stringclass.h #ifndefSTRINGCLASS_H #defineSTRINGCLASS_H #inc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 考试 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)