//头文件
#ifndef _LIST_H
#define _LIST_H
#include
using namespace std;
template
class CList;
template
class ListNode
{
friend class CList;
public:
ListNode() :data(Type()), next(NULL)
{
}
Lis...
分类:
编程语言 时间:
2015-05-22 22:39:18
阅读次数:
219
LinkedList
LinkedList基于双向循环链表实现。也可以被当做堆栈,队列或双端队列进行操作。非线程安全。下面直接贴ArrayList的Java实现(只贴了部分代码),来源JDK1.8.0_25/src.zip。
/**
* ****双向链表对应的数据结构*********
* 包含:节点值item
* 前驱 pre
* ...
分类:
编程语言 时间:
2015-05-20 22:22:46
阅读次数:
189
本文利用经典的魔术师发牌问题与拉丁法阵分别解说了循环链表与单向链表的使用,作为算法中的经典,对于链表的学习和理解都有着非常大的帮助,最好还是一看。魔术师发牌问题问题描写叙述:魔术师利用一副牌中的13张黑牌,预先将他们排好后叠放在一起,牌面朝下。对观众说:“我不看牌,仅仅数数就能够猜到每张牌是什么,我...
分类:
其他好文 时间:
2015-05-10 20:25:19
阅读次数:
214
一、循环链表
什么是循环链表?
最后一个结点的链接又指回头结点(第一个结点)的链表,整个链表形成一个环。与单链表相比,操作时判断最后一个结点的条件为:结点的链接是否为头结点
空表
条件:L->next==L非空表 条件 p->next==L二、双向链表-什么是双向链表?
用两个链接表示元素间的逻辑关系,其一指向直接后继,其二指向直接前驱。算法描述
typedef struct D...
分类:
其他好文 时间:
2015-05-10 14:19:01
阅读次数:
114
今天总结线性表中的双向循环链表。
什么是双向循环链表?
看名字估计也就知道了,首相他是一个循环链表,也就是最后一个结点的指针域不为空,而是指向头结点,其次与单向循环链表相比,它是双向的。所谓双向,就是给每个结点再增加一个指针域,这个指针域指向前一个结点。
即是下面这样(来自百度图片):
为什么要用双向循环链表?
无论单链表还是单向循环链表,都只有一个指针域,它们都是直...
分类:
编程语言 时间:
2015-05-09 10:17:56
阅读次数:
228
今天总结循环单链表
什么是单循环链表?
单链表终端结点的指针域是指向空的,如果将其指向头结点,这样就形成了一个环,那么这种首尾相接的环就够成了单循环链表.
单链表中我们都是用头指针来表示的,但是在单循环链表里,用尾指针(指向最后一个节点)。为什么要这样,因为如果用头指针,那么当查找最后一个元素的时候,就要循环遍历,时间复杂度为O(n),如果用尾指针,时间复杂度为O(1),而因为是循环的,所以...
分类:
编程语言 时间:
2015-05-07 14:44:21
阅读次数:
192
1.单链表代码:包含了尾插法,插入,删除操作。
有头结点的单链表也是为了在第一个位置插入和删除时候容易,不需要另外讨论
#include
#include
typedef struct Linklist
{
int key;
Linklist *next;
}Linklist;
Linklist* create_end()
{
Linklist *head=(Link...
分类:
编程语言 时间:
2015-05-06 15:05:03
阅读次数:
322
/n个人排一圈123报数,报到3的人退到圈外,直到剩最后一个人为止/
//后插法建立循环链表#include
#include
#include
#include
#define N 5
typedef struct Node
{
int num;
struct Node *next;
}Node,*node;
int...
分类:
其他好文 时间:
2015-05-06 00:01:47
阅读次数:
123