知识大全 数据结构考研分类复习真题 第二章 答案[31]

Posted 结点

篇首语:无私是稀有的道德,因为从它身上是无利可图的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第二章 答案[31]相关的知识,希望对你有一定的参考价值。

   .[题目分析]  知道双向循环链表中的一个结点 与前驱交换涉及到四个结点(p结点 前驱结点 前驱的前驱结点 后继结点)六条链   void  Exchange(LinkedList p)∥p是双向循环链表中的一个结点 本算法将p所指结点与其前驱结点交换   q=p >llink;  q >llink >rlink=p;∥p的前驱的前驱之后继为p  p >llink=q >llink;∥p的前驱指向其前驱的前驱   q >rlink=p >rlink;∥p的前驱的后继为p的后继   q >llink=p;∥p与其前驱交换  p >rlink >llink=q;∥p的后继的前驱指向原p的前驱  p >rlink=q;∥p的后继指向其原来的前驱  ∥算法exchange结束

   .[题目分析] 顺序存储的线性表递增有序 可以顺序查找 也可折半查找 题目要求 用最少的时间在表中查找数值为x的元素 这里应使用折半查找方法

  void  SearchExchangeInsert(ElemType a[];ElemType x)∥a是具有n个元素的递增有序线性表 顺序存储 本算法在表中查找数值为x的元素 如查到则与其后继交换位置;如查不到 则插入表中 且使表仍递增有序    low= ;high=n ;∥low和high指向线性表下界和上界的下标  while(low<=high)  mid=(low+high)/ ;∥找中间位置  if(a[mid]==x) break;∥找到x 退出while循环   else if (a[mid] <x) low=mid+ ;∥到中点mid的右半去查   else high=mid ;∥到中点mid的左部去查     if(a[mid]==x && mid!=n)∥若最后一个元素与x相等 则不存在与其后继交换的操作   t=a[mid];a[mid]=a[mid+ ];a[mid+ ]=t;∥数值x与其后继元素位置交换   if(low>high)∥查找失败 插入数据元素x  for(i=n ;i>high;i ) a[i+ ]=a[i];∥后移元素   a[i+ ]=x;∥插入x   ∥结束插入  ∥结束本算法

  [算法讨论] 首先是线性表的描述 算法中使用一维数组a表示线性表 未使用包含数据元素的一维数组和指示线性表长度的结构体 若使用结构体 对元素的引用应使用a elem[i] 另外元素类型就假定是ElemType 未指明具体类型 其次 C中一维数组下标从 开始 若说有n个元素的一维数组 其最后一个元素的下标应是n 第三 本算法可以写成三个函数 查找函数 交换后继函数与插入函数 写成三个函数显得逻辑清晰 易读

cha138/Article/program/sjjg/201311/23335

相关参考

知识大全 数据结构考研分类复习真题 第六章 答案 (四)[31]

  . 终态图cha138/Article/program/sjjg/201311/22638

知识大全 数据结构考研分类复习真题 第五章 答案[31]

  [题目分析]题目中要求矩阵两行元素的平均值按递增顺序排序由于每行元素个数相等按平均值排列与按每行元素之和排列是一个意思所以应先求出各行元素之和放入一维数组中然后选择一种排序方法对该数组进行排序注意

知识大全 数据结构考研分类复习真题 第十章 答案[31]

    类似叙述题略  外排序用k路归并(k>)是因为k越小归并趟数越多读写外存次数越多时间效率越低故一般应大于最少的路归并若将k路归并的败者树思想单纯用于内排序因其由胜者树改进而来且辅助空间大

知识大全 数据结构考研分类复习真题 第二章 答案[1]

  第章 线性表答案  一.选择题  ABCADDDCBBCIIEBCBCCCAAADCBDCBBAD  二.判断题  ×√√××××××××××√×√  部分答案解释如下  头结点并不仅起

知识大全 数据结构考研分类复习真题 第六章 答案 (五)[31]

  [题目分析]删除以元素值x为根的子树只要能删除其左右子树就可以释放值为x的根结点因此宜采用后序遍历删除值为x结点意味着应将其父结点的左(右)子女指针置空用层次遍历易于找到某结点的父结点本题要求删除

知识大全 数据结构考研分类复习真题 第二章 答案[4]

  .()la      ()         &

知识大全 数据结构考研分类复习真题 第二章 答案[54]

  .[题目分析]本题所用数据结构是静态双向链表其结构定义为  typedef struct node  char data[maxsize];∥用户姓名maxsize是

知识大全 数据结构考研分类复习真题 第二章 答案[51]

  ()voidCreatOut()∥建立有n个单词的单向链表重复单词只在链表中保留一个最后输出频度最高的k个单词  LinkedListla;  la=(LinkedList)malloc(size

知识大全 数据结构考研分类复习真题 第二章 答案[46]

  .[题目分析]在递增有序的线性表中删除数值相同的元素要知道被删除元素结点的前驱结点  LinkedListDelSame(LinkedListla)  ∥la是递增有序的单链表本算法去掉数值相同的

知识大全 数据结构考研分类复习真题 第二章 答案[42]

  ()要求编程实现带头结点的单链表的逆置首先建立一单链表然后逆置  typedef struct node  int data;∥假定结点数据域为整型  struct&