- 博客(14)
- 问答 (13)
- 收藏
- 关注
原创 《数据结构》2.10设计一个算法,删除顺序表中值为item的元素,要求算法的时间复杂度是O(n),空间复杂度是O(1)
2.10 设计一个算法,删除顺序表中值为item的元素,要求算法的时间复杂度是O(n),空间复杂度是O(1)算法思想:设置两个指针,分别而从表的头和尾开始遍历,当遇到值为item的元素时,将右端 的uansu和左端的元素值交换。void Delete(List &L,int &item){ int i=1,j=L.length; while(i<j){ while(i<j&&L
2016-03-27 17:29:40 8305
原创 《数据结构》将一个带头结点的单链表分解成两个单链表
将一个带头结点的单链表分解成两个单链表题目描述:/*设计一个算法,将一个带头结点的单链表分解成两个具有相同结构的链表B和C,其中B白哦的结点为A中小于0的结点,C表的结点为A中大于0 的结点,要求B和C 仍利用A表的结点。 (A表的元素都是非0元素)*/算法思想:‘假设原来的连败哦是LA,将La,分解成LB和LC,首先需要生成两个头结点,LB和LC;设置
2016-03-22 15:24:18 20289 4
原创 《数据结构》2.4求两个递增链表的差集
2.4求连个递增来表的差集题目描述:已知A和B表是两个集合,其元素的值递增排列;设计一个算法,求A和B的差集,(即出现在A中但是不在B中) 结果放在A中,同时返回元素的个数。 算法思想:需要设置三个指针,pa,pb,pc;初始时,pa指向L1的第一个结点,pb指向第二个结点,pc指向L3求得头结点,L3=L1,即使用L1的头结点当做新链表L3的头结点。当pa和pb都
2016-03-18 12:55:36 3307 1
原创 《数据结构》2.3求两个递增链表的交集
2.3求两个递增链表的交集题目描述:已知两个链表A和B,分别表示两个集合,A和B的元素是递增的。设计一个算法求两个集合的交集,要求使用原来的存储空间。算法思路描述:/*算法思想:假设两个表分别是L1和L2,表的元素递增排列;需要3个指针,pa,pb,pc.指针的初始值是pa指向L1的第一个结点,pb指向L2的第一个结点,pc指向新表L3的头结点;初始时,L3指向
2016-03-14 22:25:00 2482
原创 《数据结构》2.1递增链表的合并
2.1递增链表的合并题目描述:设计一个算法将两个递增链表合并成一个递增链表,仍使用原来的存储空间,不申请新的存储空间,且新表中不能有重复元素。 假设要合并的两个链表的元素都是一次递增的。算法思想:设立三个指针pa,pb,pc,其中pa,pb执行LA,和LB中待比较的结点,而pc执行LC表当前最后一个结点。pa,pb,pc的初始值为:pa,pb指向LA和LB的第一
2016-03-12 11:07:12 887 1
原创 《数据结构》链式有序表的合并
链式有序表的合并算法思想:设立三个指针,pa,pb,pc,其中pa和pb分别指向La表和LB表当前待比较结点,而pc指向LC白哦当前最后一个结点。指针的初始值:pa和pb分别指向LA和LB表第一个结点,pc指向空表LC的头结点;然后比较指针a和pb所指向的元素的值,依次从表LA和LB“摘取”较小的元素插入LC表的最后。当其中一个表为空时,需要将另一个表的剩余段链接在pc所指的结点之
2016-03-09 13:07:40 5428
原创 《数据库》顺序有序表的合并
顺序有序表的合并算法思想:shoux9ian创建一个新表LC,通过比较指针pa和pb所指向的元素值,一次从表LA或表LB中“摘取”较小的元素插入到LC的最后,当其中一个表变为空时,说明此表的元素已经归并完毕,则需要将另一个非空表的剩余的元素一次插入到LC的最后面即可。分析:在该算法中5个指针:pa指向表LA的表头;pb指向表LB的表头;pc指向表LC的表头;pa_last指向表LA
2016-03-09 12:50:24 2479 2
原创 《数据结构》链栈
链栈链栈的存储结构与单链表的存储结构相同。由于栈是在栈顶进行删除和添加元素的,因此,将链表的首部作为栈顶是最方便的。而且没有必要像单链表那样为了操作简单而附加一个头结点。在链栈中注意指针的方向是从栈顶指向栈底。#include#define MAX 100typedef struct StackNode{ int data; struct StackNode *next;
2016-03-08 08:30:24 466
原创 《数据结构》顺序栈
栈对于栈,就是只能在栈顶(表尾)及逆行插入和删除的线性表。顺序栈是利用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的元素数据。分别使用top指针和base指针指向栈顶和栈底。栈为空的标志是:top==base.要注意的是:非空栈的栈顶指针总是指向栈顶元素的下一个位置。顺序栈的初始化:1.为栈分配一组辽宁徐的数组空间2.将栈置空,即栈顶指针和栈底
2016-03-08 08:07:22 660
原创 《数据结构》一般线性表的合并
一般线性表的合并算法思想:遍历表A和表B,查看B的每一个元素是否在A中,若不在,将B的该元素插入到A的表尾,A表的表长+1。算法的时间复杂度和A、B的长度有关,O(m*n).//合并void Combine(SqList &A,SqList &B){ for(int i=0;i<B.length;i++){ int count=0; for(int j=0;j<A.le
2016-03-05 18:11:54 13745
原创 《数据结构》双向链表的基本操作
双向链表的操作双向链表的基本操作包括:判断链表是否为空、计算链表的长度、遍历链表,这3中操作的方法和单链表一样,主要和双向链表中的指向后继的指针有关。双向链表的插入和删除操作和单链表是有区别的:双向链表的插入和删除操作要修改指向前驱和指向后继的指针。双向链表的删除:删除指定位置 i 的元素1.判断输入的删除的位置是否合法,12.顺着指向后继的指针域移动指针,找到第i-1个结点
2016-03-04 23:18:46 1002
原创 《数据结构》双向链表的创建
双向链表的创建双向链表的创建同样像单链表一样可以有两种方法:头插法和尾插法。使用尾插法创建双向链表:算法思想:先定义一个指针q指向头结点1.新结点p的前驱指向头结点L;2.新结点的next指针域置空;3.头结点的next指向p;4.q指向p.void CreateList1(DuLinkList &L,int n){ L=new DuLNode; L->ne
2016-03-03 18:23:35 1142
原创 《数据结构》单链表反转
单链表反转题目描述:/*设计一个算法,通过一趟遍历,将链表中所有的链接方向反转,仍利用原表的空间 */思想:先将链表的头结点指针域置空,p指向链表的第一个结点;q指向*p的后继,然后将*p插入到头结点的后面。void TurnList(LinkList &L){ struct LNode *p; p=L->next; L->next=NUL
2016-03-02 22:12:36 525
原创 《数据结构》只设置尾指针而不设置头指针的循环链表的合并
只设置尾指针而不设置头指针的讯循环链表的合并注意和设置头指针的循环链表的区别。在该算法中,专门定义了链表的尾指针,注意链表在定义,遍历,等操作上和折纸头指针的链表的区别。#include#includeusing namespace std;#define MAX 100typedef struct LNode{ int data; struct LNod
2016-03-01 15:58:12 3372
空空如也
redis的value类型为list时,ltrim命令
2021-03-25
为什么输入就出现错误??
2016-03-27
为什么不能运行,第一次写servlet
2016-03-23
为什么没有输出任何东西
2016-03-23
为什么按照注释覅的那样写,输出的结果不对??
2016-03-23
哪里有问题?求解答,数据结构算法的问题
2016-03-13
这段代码有什么错误,为什么输入后就不能运行了??
2016-03-06
为什么两个的结果误差那么大??
2015-10-24
最小生成树问题,求大神解答???
2015-06-01
这道题用哈希怎么解决??求解
2015-05-29
我想的太简单了,当然不对,谁能给个思路
2015-01-17
poj1064那道题,我的代码怎么老是不通过?
2015-01-13
这个程序怎么老是有警告,不能运行!!
2014-08-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人