队列常常也使用链式存储的方式来实现。为了方便操作,同顺序存储一样,我们要维护一个头指针和一个尾指针。如下图:
在链式队列中显然不会出现假溢出的情况。但在出队时,要及时释放内存。由于在队列的实现:顺序队列中,对队列的描述已经很清楚了。就闲话不多说,直接上代码:
类定义和类实现
#include
#include
using namespace std;
typedef int ELem...
分类:
其他好文 时间:
2014-06-10 08:04:30
阅读次数:
253
题目:输入一个链表,输出该链表中倒数第k个结点 (注意:我们将链表最末一个结点记为
倒数第1个结点,也就是k从1开始计数)解题分析:方法一:遍历链表两次,第一次统计链表结点个数,第二次遍历就可以找到倒数第K个结点方法二:遍历链表一次我们使用两个指针,第一个指针从链表的头指针开始遍历向前走k-1步,第...
分类:
其他好文 时间:
2014-06-09 13:08:20
阅读次数:
246
1.链表分类
通过线性表概述,我们知道了链表这样一种数据结构,它又分成三类,分别是
单向链表循环链表双向链表
单向链表
单向链表的指针域只有一个指向下一个节点的指针,需要注意几点:
1.头指针——指向第一个节点
2.最后一个结点的指针指向NULL
3.头结点——在链表的第一个结点之前附设一个结点,它的数据域为空
所以,我们看到:
单向链表为空的链表...
分类:
其他好文 时间:
2014-06-03 01:05:56
阅读次数:
311
1. 循环队列的顺序存储结构
typedef struct
{
QElemType data[MAXSIZE];
int front; /* 头指针 */
int rear; /* 尾指针,若队列不空,指向队列尾元素的下一个位置 */
}SqQueue;
2. 初始化一个空队列Q
Status InitQueue(SqQueue *Q)
{
Q->fr...
分类:
编程语言 时间:
2014-05-25 04:43:05
阅读次数:
407
题目链接题意:给出单链表头指针,要求交换链表中每一对相邻的结点.注意:不可以改变链表中结点的值,只可以使用常量空间.附上代码:
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int
val;...
分类:
其他好文 时间:
2014-05-23 10:43:49
阅读次数:
249
#include
#include
typedef int elemType;
typedef struct Node{//定义单链表节点类型
elemType data;
Node *next;
}Node,*linkList;
//初始化链表,单链表的头指针为空
int initList(linkList &L)
{
L= (Node *)malloc(sizeof(Node));...
分类:
其他好文 时间:
2014-05-21 11:19:08
阅读次数:
228
/这里是链表的创建其包含的是头指针phead,头节点,以及尾节点p->next = NULL
为链表创建结束标志。/判断指针为空十分重要,当然也不能忘了释放,代码是:if(head !=NULL){free(head);head = NULL;}head
= (SLNode*)malloc(size...
分类:
其他好文 时间:
2014-05-17 19:40:54
阅读次数:
255
题目链接题意: 给出单链表头指针head和整数n, 要求删除链表的倒数第n个结点,
这里n保证是合法的输入.我的思路....其实我没大明白题目建议的one pass是什么意思, 可能就是遍历一遍链表的,
不过我还是秉着能A掉就万岁的心态...我还是首先记录了链表的长度, 然后删除第len - n +...
分类:
其他好文 时间:
2014-05-16 05:45:56
阅读次数:
348
题意:交换给定链表中的相邻节点,但不可以改变链表里的值
如1->2->3->4交换后为2->1->4->3
思路:
按题意中的扫描去改变每两个相邻节点的next指针的指向即可。
小技巧:
因为处理每两个相邻节点的时候,需要一个指针记录它们前一个节点,而头节点前面没有节点,
所以可设置一个dummy节点指向头指针,这样开头的两个节点的处理方式跟其它的相邻节点的处理方式就一样了
复杂度:时间O(n),空间O(1)...
分类:
其他好文 时间:
2014-05-15 00:16:00
阅读次数:
359
#include
using namespace std;
const int MAXQSIZE = 5;
//队列类
template
struct LinkList
{
T * data;//指向连续的数据存储区域
int front;//头指针 指向第一个元素
int rear;//尾指针 如果队列不为空指向最后元素的下一个位置
};
//构造一个空队列
template
void...
分类:
其他好文 时间:
2014-05-09 06:07:53
阅读次数:
248