知识大全 数据结构与算法线性表复习习题6[2]
Posted 指针
篇首语:不一定终身受雇,但一定终身学习。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构与算法线性表复习习题6[2]相关的知识,希望对你有一定的参考价值。
已知有一个单向循环链表 其每个结点中含三个域 pre data和next 其中data为数据域 next为指向后继结点的指针域 pre也为指针域 但它的值为空 试编写算法将此单向循环链表改为双向循环链表 即使pre成为指向前驱结点的指针域解
// 建立一个空的循环链表
Status InitList_DL(DuLinkList &L)
L=(DuLinkList)malloc(sizeof(DuLNode));
if(!L) exit(OVERFLOW);
L >pre=NULL;
L >next=L;
return OK;
// 向循环链表中插入一个结点
Status ListInsert_DL(DuLinkList &L ElemType e)
DuLinkList p;
p=(DuLinkList)malloc(sizeof(DuLNode));
if(!p) return ERROR;
p >data=e;
p >next=L >next;
L >next=p;
return OK;
// 将单循环链表改成双向链表
Status ListCirToDu(DuLinkList &L)
DuLinkList p q;
q=L;
p=L >next;
while(p!=L)
p >pre=q;
q=p;
p=p >next;
if(p==L) p >pre=q;
return OK;
已知由一个线性链表表示的线性表中含有三类字符的数据元素(如 字母字符 数字字符和其他字符) 试编写算法将该线性表分割为三个循环链表 其中每个循环链表表示的线性表中均只含一类字符
解
// 将单链表L划分成 个单循环链表
Status ListDivideInto CL(LinkList &L LinkList &s LinkList &s LinkList &s )
LinkList p q pt pt pt ;
p=L >next;
pt =s ;
pt =s ;
pt =s ;
while(p)
if(p >data>= && p >data<= )
q=p;
p=p >next;
q >next=pt >next;
pt >next=q;
pt =pt >next;
else
if((p >data>= A && p >data<= Z ) ||
(p >data>= a && p >data<= z ))
q=p;
p=p >next;
q >next=pt >next;
pt >next=q;
pt =pt >next;
else
q=p;
p=p >next;
q >next=pt >next;
pt >next=q;
pt =pt >next;
q=L;
free(q);
return OK;
在 题中 异或指针双向链表 类型XorLinkedList和指针异或函数XorP定义为
typedefstructXorNode
char data;
structXorNode *LRPtr;
XorNode *XorPointer;
typedestruct //无头结点的异或指针双向链表
XorPointerLeft Right;//分别指向链表的左侧和右端
XorLinkedList;
XorPointer XorP(XorPointer p XorPointer q);
// 指针异或函数XorP返回指针p和q的异或值
cha138/Article/program/sjjg/201311/23387相关参考
假设在算法描述语言中引入指针的二元运算异或若a和b为指针则a⊕b的运算结果仍为原指针类型且 a⊕(a⊕b)=(a⊕a)⊕b=b
要求同题试对单链表编写求C的算法 解 //将AB求交后的结果放在C表中并删除B表 StatusListCross_L(Li
已知L是无表头结点的单链表且P结点既不是首元结点也不是尾元结点试从下列提供的答案中选择合适的语句序列 a在P结点后插入S结点的语句序列是__________________ b在P结点前插入S
指出以下算法中的错误和低效之处并将它改写为一个既正确又高效的算法 StatusDeleteK(SqList&aintiintk) //本过程从顺序存储结构的线性表a中删除第i个元素
试写一算法对单链表实现就地逆置 解 //带头结点的单链表的逆置 StatusListOppose_L(LinkList&L) LinkListpq; p=L; p=p>
已知指针la和lb分别指向两个无头结点单链表中的首元结点下列算法是从表la中删除自第i个元素起共len个元素后将它们插入到表lb中第i个元素之前试问此算法是否正确?若有错请改正之 StatusD
对题的条件作以下两点修改对单链表重新编写求得表C的算法 ()假设在同一表(A或B)中可能存在值相同的元素但要求新生成的表C中的
第章 线性表 描述以下三个概念的区别头指针头结点首元结点(第一个元素结点) 解头指针是指向链表中第一个结点的指针首元结点是指链表中存储第一个数据元素的结点头结点是在首元结点之前附设的
在程序设计中常用下列三种不同的出错处理方式 ()用exit语句终止执行并报告错误 ()以函数的返回值区别正确返回或错误返回
已知长度为n的线性表A采用顺序存储结构请写一时间复杂度为(n)空间复杂度为()的算法该算法删除线性表中所有值为item的数据元素(O()表示算法的辅助空间为常量) 【北京航空航天大学五(分)】