知识大全 数据结构与算法线性表复习习题6[1]

Posted 结点

篇首语:精神的浩瀚,想象的活跃,心灵的勤奋,就是天才。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构与算法线性表复习习题6[1]相关的知识,希望对你有一定的参考价值。

   已知A B和C为三个递增有序的线性表 现要求对A表作如下操作 删去那些既在B表中出现又在C表中出现的元素 试对顺序表编写实现上述操作的算法 并分析你的算法的时间复杂度(注意 题中没有特别指明同一表中的元素值各不相同)

  解

  // 在A中删除既在B中出现又在C中出现的元素 结果放在D中

  Status ListUnion_Sq(SqList &D SqList &A SqList &B SqList &C)

  

  SqList Temp;

  InitList_Sq(Temp);

  ListCross_L(B C Temp);

  ListMinus_L(A Temp D);

  

   要求同 题 试对单链表编写算法 请释放A表中的无用结点空间

  解

  // 在A中删除既在B中出现又在C中出现的元素 并释放B C

  Status ListUnion_L(LinkList &A LinkList &B LinkList &C)

  

  ListCross_L(B C);

  ListMinus_L(A B);

  

  // 求集合A B 结果放在A表中 并删除B表

  Status ListMinus_L(LinkList &A LinkList &B)

  

  LinkList pa pb qa qb pt;

  pa=A;

  pb=B;

  qa=pa;// 保存pa的前驱指针

  qb=pb;// 保存pb的前驱指针

  pa=pa >next;

  pb=pb >next;

  while(pa&&pb)

  if(pb >data<pa >data)

  pt=pb;

  pb=pb >next;

  qb >next=pb;

  free(pt);

  

  else

  if(pb >data>pa >data)

  qa=pa;

  pa=pa >next;

  

  else

  pt=pa;

  pa=pa >next;

  qa >next=pa;

  free(pt);

  

  

  while(pb)

  pt=pb;

  pb=pb >next;

  qb >next=pb;

  free(pt);

  

  pb=B;

  free(pb);

  return OK;

  

   假设某个单向循环链表的长度大于 且表中既无头结点也无头指针 已知s为指向链表中某个结点的指针 试编写算法在链表中删除指针s所指结点的前驱结点

  解

  // 在单循环链表S中删除S的前驱结点

  Status ListDelete_CL(LinkList &S)

  

  LinkList p q;

  if(S==S >next)return ERROR;

  q=S;

  p=S >next;

  while(p >next!=S)

  q=p;

  p=p >next;

  

  q >next=p >next;

  free(p);

  return OK;

  

cha138/Article/program/sjjg/201311/23386

相关参考

知识大全 数据结构与算法线性表复习习题6[3]

      假设在算法描述语言中引入指针的二元运算异或若a和b为指针则a⊕b的运算结果仍为原指针类型且  a⊕(a⊕b)=(a⊕a)⊕b=b

知识大全 数据结构与算法线性表复习习题5[1]

  试写一算法对单链表实现就地逆置  解  //带头结点的单链表的逆置  StatusListOppose_L(LinkList&L)    LinkListpq;  p=L;  p=p>

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

  第章 线性表  描述以下三个概念的区别头指针头结点首元结点(第一个元素结点)  解头指针是指向链表中第一个结点的指针首元结点是指链表中存储第一个数据元素的结点头结点是在首元结点之前附设的

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

  指出以下算法中的错误和低效之处并将它改写为一个既正确又高效的算法  StatusDeleteK(SqList&aintiintk)    //本过程从顺序存储结构的线性表a中删除第i个元素

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

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

知识大全 数据结构与算法线性表复习习题5[3]

      对题的条件作以下两点修改对单链表重新编写求得表C的算法  ()假设在同一表(A或B)中可能存在值相同的元素但要求新生成的表C中的

知识大全 数据结构与算法线性表复习习题5[2]

      要求同题试对单链表编写求C的算法  解  //将AB求交后的结果放在C表中并删除B表  StatusListCross_L(Li

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

  已知L是无表头结点的单链表且P结点既不是首元结点也不是尾元结点试从下列提供的答案中选择合适的语句序列  a在P结点后插入S结点的语句序列是__________________  b在P结点前插入S

知识大全 数据结构考研分类复习真题 第二章 线性表[39]

  已知长度为n的线性表A采用顺序存储结构请写一时间复杂度为(n)空间复杂度为()的算法该算法删除线性表中所有值为item的数据元素(O()表示算法的辅助空间为常量)  【北京航空航天大学五(分)】 

知识大全 数据结构与算法概论复习习题[1]

  第章 绪论  简述下列术语数据数据元素数据对象数据结构存储结构数据类型和抽象数据类型  解数据是对客观事物的符号表示在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称