扫码加入训练营

牢记核心词

学习得礼盒

2020考研计算机《数据结构(C语言版)》详解答案(5)

2019-05-18 08:12:55来源:网络

  2020年计算机考研复习已经开始,新东方在线在此整理了2020考研计算机《数据结构(C语言版)》详解答案(5),希望能帮助大家!

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

  a⊕(a⊕b)=(a⊕a)⊕b=b

  (a⊕b)⊕b=a⊕(b⊕b)=a

  则可利用一个指针域来实现双向链表L。链表L中的每个结点只含两个域:data域和LRPtr域,其中LRPtr域存放该结点的左邻与右邻结点指针(不存在时为NULL)的异或。若设指针L.Left指向链表中的最左结点,L.Right指向链表中的最右结点,则可实现从左向右或从右向左遍历此双向链表的操作。试写一算法按任一方向依次输出链表中各元素的值。

  解:

  Status TraversingLinkList(XorLinkedList &L,char d)

  {

  XorPointer p,left,right;

  if(d=='l'||d=='L'){

  p=L.Left;

  left=NULL;

  while(p!=NULL){

  VisitingData(p->data);

  left=p;

  p=XorP(left,p->LRPtr);

  }

  }

  else

  if(d=='r'||d=='R'){

  p=L.Right;

  right=NULL;

  while(p!=NULL){

  VisitingData(p->data);

  right=p;

  p=XorP(p->LRPtr,right);

  }

  }

  else return ERROR;

  return OK;

  }

  思考题:

  采用上述题所述的存储结构,写出在第i个结点之前插入一个结点的算法。

  采用上述题所述的存储结构,写出删除第i个结点的算法。


本文关键字: 2020考研计算机

考研英语核心词汇营

背词+听课+练习+督学,学习得礼盒

更多资料
更多>>
更多内容

关注新东方在线考研服务号

获得21考研真题及答案解析

1. 打开手机微信【扫一扫】,识别上方二维码;
2.点击【关注公众号】,获取资料大礼包。

近10年考研真题及答案免费下载
更多>>
更多公开课>>
更多>>
更多资料