• 71.14 KB
  • 9页

《数据结构》课程设计报告范本.docx

  • 9页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'∈ElemSet,i=1,2⋯n>=0}ai>|ai-1,ai∈D,i=1,2,⋯,n}《数据结构》课程设计报告一、课程设计的内容、要求1线性表的另一种实现。对顺序表空间被耗尽问题的一个解决办法是:当数组溢出时,用一个更大的数组替换该数组。一个较好的法则是:当出现溢出时,数组长度加长一倍具有较高的时间和空间效率。参照教材中顺序表的有关内容,按上面的要求实现顺序表,并测试当数组溢出时你的实现的运作情况。二、所采用的数据结构ADTList{数据对象:D={ai|ai数据关系:R1={data=(int*)malloc(sizeof(ElemType)*INIT_SIZE);list->size=0;list->max_size=INIT_SIZE;}voidDestroyList(LIST&list){1/8 list.size=0;list.max_size=0;free(list.data);}boolListEmpty(LISTlist){if(list.size>0)returnfalse;elsereturntrue;}intListLength(LISTlist){returnlist.size;}boolGetElem(LISTlist,inti,ElemType&e){if(i<1||i>list.size)returnfalse;else{e=list.data[i];returntrue;}}intLocateElem(LISTlist,ElemTypee,bool(*compare)(ElemType,ElemType)){//在顺序线性表L中查找第1个值与e满足compare()的元素的位序。//若找到,则返回其在L中的位序,否则返回0。inti;ElemType*p;i=0;p=list.data;while(i<=list.size&&!(*compare)(*p++,e))++i;if(i<=list.size)returni;elsereturn0;}boolPriorElem(LISTlist,intcur_e,int&pre_e)//前驱{if(cur_e<0||cur_e>list.size)returnfalse;else{pre_e=cur_e-1;returntrue;}2/8 }boolNextElem(LISTlist,intcur_e,int&next_e)//后继{if(cur_e<0||cur_e>list.size)returnfalse;else{next_e=cur_e+1;returntrue;}}voidInsert(LIST*list,ElemTypevalue){if(list->size>=list->max_size){inti;ElemType*temp=(int*)malloc(sizeof(ElemType)*list->size*2);cout<max_size;for(i=0;isize;i++){temp[i]=list->data[i];}free(list->data);list->data=temp;list->max_size*=2;cout<<"改变后大小"<max_size<data[list->size]=value;list->size++;}voidInsert_Back(LIST*list,intidx,ElemTypevalue){if(list->size>=list->max_size){inti;ElemType*temp=(int*)malloc(sizeof(ElemType)*list->size*2);cout<max_size;for(i=0;isize;i++){temp[i]=list->data[i];}free(list->data);list->data=temp;3/8 list->max_size*=2;cout<<"改变后大小"<max_size<list->size){list->data[list->size]=value;}else{inti;for(i=list->size;i>idx;i--){list->data[i]=list->data[i-1];}list->data[idx]=value;}list->size++;}voidListDelete(LIST*list,inti,ElemType*e)//删除一个元素{intj;*e=list->data[i];for(j=i+1;j<=list->size-1;j++)list->data[j-1]=list->data[j];list->size--;}voidPrint_list(LIST*list){inti;if(list->size==0){cout<<"当前线性表内没有元素。"<size;i++){cout<data[i]<<"";}cout<size=0;free(list->data);InitList(list);cout<<"线性表已清空,当前元素个数为"<size<<",线性表容量为"<max_size<>n).good())){cin.clear();charch;cin>>ch;if(ch=="#")break;else{cout<<"您的输入有误,请重新输入"<>i;if(i==0){ClearList(&list);}elseif(i==1){intidx;do{if(!cin.good()){cin.clear();cout<<"您的输入有误,请重新输入:"<>idx).good()));intn;if(idx>list.size){cout<<"警告:输入的位置大于元素的个数,将插入到末端."<>n).good()));Insert_Back(&list,idx,n);Print_list(&list);}6/8 elseif(i==2){inti;do{if(!cin.good()){cin.clear();cout<<"您的输入有误,请重新输入:"<>i).good()));inte;if(i>list.size){cout<<"警告:删除的位置大于元素的个数,删除无效。"<3){cout<<"您的输入有误,请重新输入:"<