知识大全 数据结构考研分类复习真题 第二章 答案[45]
Posted 结点
篇首语:三人行,必有我师焉。择其善者而从之,其不善者而改之。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第二章 答案[45]相关的知识,希望对你有一定的参考价值。
.[题目分析] 将一个结点数据域为字符的单链表 分解成含有字母字符 数字字符和其它字符的三个循环链表 首先要构造分别含有这三类字符的表头结点 然后从原链表第一个结点开始 根据结点数据域是字母字符 数字字符和其它字符而分别插入到三个链表之一的链表 注意不要因结点插入新建链表而使原链表断链 另外 题目并未要求链表有序 插入采用 前插法 每次插入的结点均成为所插入链表的第一元素的结点即可
void OneToThree(LinkedList L la ld lo)∥L是无头结点的单链表第一个结点的指针 链表中的数据域存放字符 本算法将链表L分解成含有英文字母字符 数字字符和其它字符的带头结点的三个循环链表 la=(LinkedList)malloc(sizeof(LNode));∥建立三个链表的头结点 ld=(LinkedList)malloc(sizeof(LNode)); lo=(LinkedList)malloc(sizeof(LNode)); la >next=la;ld >next=ld;lo >next=lo;∥置三个循环链表为空表 while(L!=null)∥分解原链表 r=L; L=L >next; ∥L指向待处理结点的后继 if(r >data>= a && r >data<= z || r >data>= A && r >data<= Z ) r >next=la >next; la >next=r;∥处理字母字符 else if(r >data>= && r >data<= ) r >next=ld >next;ld >next=r;∥处理数字字符 else r >next=lo >next;lo >next=r;∥处理其它符号 ∥结束while(L!=null) ∥算法结束
[算法讨论] 算法中对L链表中每个结点只处理一次 时间复杂度O(n) 只增加了必须的三个表头结点 符合题目 用最少的时间和最少的空间 的要求
cha138/Article/program/sjjg/201311/23327相关参考
[题目分析]本题是基数排序的特殊情况关键字只含一位数字的整数 typedefstruct intkey; intnext; SLRecType; SLRecTypeR[N+]; typ
第章 线性表答案 一.选择题 ABCADDDCBBCIIEBCBCCCAAADCBDCBBAD 二.判断题 ×√√××××××××××√×√ 部分答案解释如下 头结点并不仅起
知识大全 数据结构考研分类复习真题 第六章 答案 (五)[45]
voidInOrderThreat(BiThrTreethrt) //thrt是指向中序全线索化头结点的指针本算法中序遍历该二叉树 p=thrt>lchild; //p指向二叉
.()la () &
.[题目分析]本题所用数据结构是静态双向链表其结构定义为 typedef struct node char data[maxsize];∥用户姓名maxsize是
()voidCreatOut()∥建立有n个单词的单向链表重复单词只在链表中保留一个最后输出频度最高的k个单词 LinkedListla; la=(LinkedList)malloc(size
.[题目分析]在递增有序的线性表中删除数值相同的元素要知道被删除元素结点的前驱结点 LinkedListDelSame(LinkedListla) ∥la是递增有序的单链表本算法去掉数值相同的
()要求编程实现带头结点的单链表的逆置首先建立一单链表然后逆置 typedef struct node int data;∥假定结点数据域为整型 struct&
()本题与上面两题类似要求结果指针为lc其核心语句段如下 pa=la>next;pb=hb>next; lc=(LinkedList)malloc(sizeof(LNode));
.设 q:=p^llink; 则 q^rlink:=p^rlink; p^rlink^llink:=q; p^llink:=q^llink; q^lli