1.链队列。利用带有头结点的单链表来实现链队列,插入和删除的复杂度都为o(1)
代码:
#include
#include
typedef struct Qnode
{
int data;
Qnode *next;
}Qnode;
typedef struct LinkQueue
{
Qnode *front;
Qnode *rear;
}LinkQueue;
vo...
分类:
编程语言 时间:
2015-05-07 20:30:24
阅读次数:
163
今天总结循环单链表
什么是单循环链表?
单链表终端结点的指针域是指向空的,如果将其指向头结点,这样就形成了一个环,那么这种首尾相接的环就够成了单循环链表.
单链表中我们都是用头指针来表示的,但是在单循环链表里,用尾指针(指向最后一个节点)。为什么要这样,因为如果用头指针,那么当查找最后一个元素的时候,就要循环遍历,时间复杂度为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
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。1.结构体的定义,构建链表以及链表数据的输出struct listnode{ int data; listnode *next;};//使用尾插法构建链表listnode *init(){ listnode *head=...
分类:
其他好文 时间:
2015-05-05 23:25:19
阅读次数:
210
Reverse Linked List
Reverse a singly linked list.
解题思路:
链表翻转。没有什么很大的难度,画个图分析一下即可。单链表的技巧就是申请一个伪头结点,然后在最后的时候删除即可,这样能够保证中间代码不需要考虑不同的情况。
/**
* Definition for singly-linked list.
* struct ListNode ...
分类:
其他好文 时间:
2015-05-05 16:38:48
阅读次数:
107
开始没看单向循环链表,感觉应该很简单,但实际上有几个概念不是很清楚:头结点,头指针,尾指针,尾节点???【个人理解】:头结点就是一个链表中实际存储数据的那个节点的前一个节点,这个节点不存储数据,只有一个指针指向第一个实际存储数据的节点(这个有效节点专业术语叫:首元素),这个节点就是头节点,指向头结....
分类:
其他好文 时间:
2015-05-03 15:55:21
阅读次数:
120
对单链表实现如下功能:
void InitList(List *list); //初始化单链表
bool push_back(List *list,ElemType x); //尾插法
void show_seqlist(List *list); //显示链表内容
bool push_front(List *list,ElemType x);//头插法
b...
分类:
其他好文 时间:
2015-04-30 01:00:56
阅读次数:
102
栈的链式存储1 栈的链式表示
栈的链式存储结构称为链栈,是运算受限的单链表。其插入和删除操作只能在表头位置上进行。因此,链栈没有必要像单链表那样附加头结点,栈顶指针top就是链表的头指针。图3-4是栈的链式存储表示形式。链栈的结点类型说明如下:
typedef struct Snode
{ ElemType data ;
struct Snode *next ;
} SNo...
分类:
其他好文 时间:
2015-04-29 09:56:46
阅读次数:
123
循环链表 循环链表(Circular Linked List):是一种头尾相接的链表。其特点是最后一个结点的指针域指向链表的头结点,整个链表的指针域链接成一个环。
从循环链表的任意一个结点出发都可以找到链表中的其它结点,使得表处理更加方便灵活。
循环链表的操作
对于单循环链表,除链表的合并外,其它的操作和单线性链表基本上一致,仅仅需要在单线性链表操作算法基础上作以下简单修改:...
分类:
其他好文 时间:
2015-04-28 18:25:44
阅读次数:
139
1 #include 2 #include 3 #include 4 #define MAX 100010 /*点数*/ 5 int First[MAX]; /*First[x]:x表示头结点为x,First[x]表示下一条边的编号*/ 6 using namespace std; 7 ...
分类:
其他好文 时间:
2015-04-28 17:48:38
阅读次数:
136