ch2部分习题解答.pptVIP

  • 3
  • 0
  • 约4.2千字
  • 约 13页
  • 2020-08-21 发布于河北
  • 举报
Chapter 2 线性表 练习:找出以下算法中的错误和低效之处,并将它改写为一个 既正确又高效的算法。 int Deletek(SeqList *L, int i, int k) /*从顺序表L中删除第i个元素起的k个元素*/ { int count,j; ???? if (i0||k0||i+kL-size) ?????? { printf(“\n参数不合法!”); return 0; } else ??????? { for (count=1;countk;count++) {???? /*删除一个元素*/ for(j=L-size;j=i+1;j--) L-list[j-1]=L-list[j]; L-size--; } return 1; ??????? } } 书P46. 2-19 void ListDeleteMore(SLNode *L, DataType x) /*在带头结点的单链表中删除所有值为x的数据元素*/ { SLNode *p,*s; p=L; while(p-next!=NULL) { s=p-next; if (s-data==x) { p-next=s-next; /*删除值为x的结点*/ free(s); } else p=s; } } 补充:已知一个带头结点的递增有序单链表L,试编写一高效 算法:删除该链表中所有元素值大于x且小于y的结点。 * 改进:int Deletek(SeqList *L, int i, int k) /*从顺序表L中删除第i个元素起的k个元素*/ { int count,j; ???? if (i0||k=0||i+kL-size) ?????? { printf(“\n参数不合法!”); return 0; } else ??????? { /*删除k个元素*/ for(j=i+k;jL-size;j++) L-list[j-k]=L-list[j]; L-size-=k; return 1; } } 2010考研题: 设将n(n1)个整数存放到一维数组R中。试设计一个在 时间和空间两方面尽可能高效的算法,将R中的序列循环左 移P(0Pn)个位置,即将R中的数据由(x0,x1,…,xn-1)变 换为(xp,xp+1,…,xn-1,x0,x1,…,xp-1)。 (1)算法设计思想 先将n个数(x0,x1,…,xp,…,xn-1)原地逆置,得到 (xn-1,…,xp,xp-1,… x0),然后再将前n-p个和后p个元素分 别原地逆置,得到最终结果:xp,xp+1,…,xn-1,x0,x1,

文档评论(0)

1亿VIP精品文档

相关文档