算法设计基础实验报告解析.docVIP

  • 22
  • 0
  • 约1.11万字
  • 约 19页
  • 2016-10-22 发布于湖北
  • 举报
算法设计基础实验 班级: 学号: 姓名: 实验一 线性表的应用 实验内容: 1.给定一线性表L=(15,25,05,36,78,85,23),写出顺序存储结构下的插入、删除、排序操作的算法及程序。 2.写出链接存储结构下的插入、删除、排序操作的算法及程序。 实验要求: 1.掌握顺序及链接存储下的插入、删除算法; 2.掌握直接插入排序算法; 实验程序 #includeiostream.h #includestdlib.h struct List { int *list; int size; int MaxSize; }; void InitList(List L) { L.MaxSize=10; L.list=new int[L.MaxSize]; if(L.list==NULL) { cout动态可分配的存储空间用完,退出运行!endl; exit(1); } L.size=0; } bool InsertList(List L,int item,int pos) { if(pos-1||posL.size+1) { coutpos值无效!endl; return false; } int i; if(pos==0) { for(i=0;iL.size;i++) if(itemL.list[i]) break; pos=i+1; } else if(pos==-1) pos=L.size+1; if(L.size==L.MaxSize) { int k=sizeof(int); L.list=(int*)realloc(L.list,2*L.MaxSize*k); if(L.list==NULL) { cout动态可分配的空间用完,退出运行!endl; exit(1); } L.MaxSize=2*L.MaxSize; } for(i=L.size-1;i=pos-1;i--) L.list[i+1]=L.list[i]; L.list[pos-1]=item; L.size++; return true; } bool DeleteList(List L,int item,int pos) { if(L.size==0) { cout线性表为空,删除无效!endl; return false; } if(pos-1||posL.size) { coutpos值无效!endl; return false; } int i; if(pos==0) { for(i=0;iL.size;i++) if(item==L.list[i]) break; if(i==L.size) return false; pos=i+1; } else if(pos==-1) pos=L.size; item=L.list[pos-1]; for(i=pos;iL.size;i++) L.list[i-1]=L.list[i]; L.size--; if(float(L.size)/L.MaxSize0.4L.MaxSize10) { int k=sizeof(int); L.list=(int*)realloc(L.list,L.MaxSize*k/2); L.MaxSize=L.MaxSize/2; } return true; } void SortList(List L) { int i,j; int x; for(i=1;iL.size;i++) { x=L.list[i]; for(j=i-1;j=0;j--) if(xL.list[j]) L.list[j+1]=L.list[j]; else break; L.list[j+1]=x; } } void TraverseList(List L) { for(int i=0;iL.size;i++) coutL.list[i] ; coutendl; } void main() { int a[7]={15,25,5,36,78,85,23}; int i; int x; List t;

文档评论(0)

1亿VIP精品文档

相关文档