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

Posted 结点

篇首语:充满着欢乐与斗争精神的人们,永远带着欢乐,欢迎雷霆与阳光。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构与算法线性表复习习题5[1]相关的知识,希望对你有一定的参考价值。

   试写一算法 对单链表实现就地逆置

  解

  // 带头结点的单链表的逆置

  Status ListOppose_L(LinkList &L)

  

  LinkList p q;

  p=L;

  p=p >next;

  L >next=NULL;

  while(p)

  q=p;

  p=p >next;

  q >next=L >next;

  L >next=q;

  

  return OK;

  

   假设有两个按元素值递增有序排列的线性表A和B 均以单链表作存储结构 请编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序 允许表中含有值相同的元素)排列的线性表C 并要求利用原表(即A表和B表)的结点空间构造C表

  解

  // 将合并逆置后的结果放在C表中 并删除B表

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

  

  LinkList pa pb qa qb;

  pa=A;

  pb=B;

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

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

  pa=pa >next;

  pb=pb >next;

  A >next=NULL;

  C=A;

  while(pa&&pb)

  if(pa >data<pb >data)

  qa=pa;

  pa=pa >next;

  qa >next=A >next;//将当前最小结点插入A表表头

  A >next=qa;

  

  else

  qb=pb;

  pb=pb >next;

  qb >next=A >next;//将当前最小结点插入A表表头

  A >next=qb;

  

  

  while(pa)

  qa=pa;

  pa=pa >next;

  qa >next=A >next;

  A >next=qa;

  

  while(pb)

  qb=pb;

  pb=pb >next;

  qb >next=A >next;

  A >next=qb;

  

  pb=B;

  free(pb);

  return OK;

  

   假设以两个元素依值递增有序排列的线性表A和B分别表示两个集合(即同一表中的元素值各不相同) 现要求另辟空间构成一个线性表C 其元素为A和B中元素的交集 且表C中的元素有依值递增有序排列 试对顺序表编写求C的算法

  解

  // 将A B求交后的结果放在C表中

  Status ListCross_Sq(SqList &A SqList &B SqList &C)

  

  int i= j= k= ;

  while(i<A length && j<B length)

  if(A elem[i]<B elem[j])i++;

  else

  if(A elem[i]>B elem[j])j++;

  else

  ListInsert_Sq(C k A elem[i]);

  i++;

  k++;

  

  

  return OK;

  

cha138/Article/program/sjjg/201311/23404

相关参考

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

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

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

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

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

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

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

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

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

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

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

      已知有一个单向循环链表其每个结点中含三个域predata和next其中data为数据域next为指向后继结点的指针域pre也为指

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

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

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

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

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

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

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

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