知识大全 数据结构与算法线性表复习习题4

Posted 结点

篇首语:少而好学,如日出之阳;壮而好学,如日中之光;老而好学,如炳烛之明。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构与算法线性表复习习题4相关的知识,希望对你有一定的参考价值。

   已知指针la和lb分别指向两个无头结点单链表中的首元结点 下列算法是从表la中删除自第i个元素起共len个元素后 将它们插入到表lb中第i个元素之前 试问此算法是否正确?若有错 请改正之

  Status DeleteAndInsertSub(LinkedList la LinkedList lb int i int j int len)

  

  if(i< ||j< ||len< ) return INFEASIBLE;

  p=la;k= ;

  while(k<i)p=p >next;k++;

  q=p;

  while(k<=len)q=q >next;k++;

  s=lb; k= ;

  while(k<j)s=s >next;k++;

  s >next=p; q >next=s >next;

  return OK;

  

  解

  Status DeleteAndInsertSub(LinkList &la LinkList &lb int i int j int len)

  

  LinkList p q s prev=NULL;

  int k= ;

  if(i< ||j< ||len< ) return INFEASIBLE;

  // 在la表中查找第i个结点

  p=la;

  while(p&&k<i)

  prev=p;

  p=p >next;

  k++;

  

  if(!p)return INFEASIBLE;

  // 在la表中查找第i+len 个结点

  q=p;k= ;

  while(q&&k<len)

  q=p >next;

  k++;

  

  if(!q)return INFEASIBLE;

  // 完成删除 注意 i= 的情况需要特殊处理

  if(!prev) la=q >next;

  else prev >next=q >next;

  // 将从la中删除的结点插入到lb中

  if(j= )

  q >next=lb;

  lb=p;

  

  else

  s=lb;k= ;

  while(s&&k<j )

  s=s >next;

  k++;

  

  if(!s)return INFEASIBLE;

  q >next=s >next;

  s >next=p; //完成插入

  

  return OK;

  

   已知线性表中的元素以值递增有序排列 并以单链表作存储结构 试写一高效的算法 删除表中所有值大于mink且小于maxk的元素(若表中存在这样的元素) 同时释放被删结点空间 并分析你的算法的时间复杂度(注意 mink和maxk是给定的两个参变量 它们的值可以和表中的元素相同 也可以不同)

  解

  Status ListDelete_L(LinkList &L ElemType mink ElemType maxk)

  

  LinkList p q prev=NULL;

  if(mink>maxk)return ERROR;

  p=L;

  prev=p;

  p=p >next;

  while(p&&p >data<maxk)

  if(p >data<=mink)

  prev=p;

  p=p >next;

  

  else

  prev >next=p >next;

  q=p;

  p=p >next;

  free(q);

  

  

  return OK;

  

   同 题条件 试写一高效的算法 删除表中所有值相同的多余元素(使得操作后的线性表中所有元素的值均不相同) 同时释放被删结点空间 并分析你的算法的时间复杂度

  解

  void ListDelete_LSameNode(LinkList &L)

  

  LinkList p q prev;

  p=L;

  prev=p;

  p=p >next;

  while(p)

  prev=p;

  p=p >next;

  if(p&&p >data==prev >data)

  prev >next=p >next;

  q=p;

  p=p >next;

  free(q);

  

  

cha138/Article/program/sjjg/201311/23408

相关参考