问答题 设以带头结点的双向循环链表表示的线性表L=(a1,a2,…,an)。试写一时间复杂度O(n)的算法,将L改造为L=(a1,a3,…,an,…,a4,a2)。
问答题 假设在算法描述语言中引入指针的二元运算“异或”,若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指向链表中的最右结点,则可实现从左向右或从右向左遍历此双向链表的操作。试写一算法按任一方向依次输出链表中各元素的值。
问答题 已知由一个线性链表表示的线性表中含有三类字符的数据元素(如:字母字符、数字字符和其他字符),试编写算法将该线性表分割为三个循环链表,其中每个循环链表表示的线性表中均只含一类字符。