20140503

1、队列(建议采用带头结点的链式队列)


  • 何时为空?答:当队列头指针等于尾指针时,队列为空。(对一般队列而言,循环队列除外)

//不带头结点的链式队列


//不带头结点的链式队列
#include <iostream>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

(出队操作) node1-->node2 --> node3 --> ....-->noden(入队操作)
// 1 1
// first rear

typedef struct Node
{
int data;
struct Node *next;
}node;
typedef struct Queue //notice :队列的数据结构只是包括两个节点指针(头和尾);
{
node* first;
node* rear;
}queue;

//队列的插入操作。注意:队列是从rear部插入
queue* insert(queue* My_queue,int x)
{
node* s;
s = (node*)malloc(sizeof(node));
s->data = x;
s->next = NULL;
//分为队列为空与队列非空两种。
if(NULL == My_queue->rear)
{
My_queue->first = s;
My_queue->rear = s;
}
else
{
My_queue->rear->next = s;
My_queue->rear = s;
}
return My_queue;
}

//队列的删除操作。注意:删除是在first部的操作。
queue* del(queue* My_queue)
{
node* p;
int x;
//判断队列是否为空
if(My_queue->first == NULL)
{
printf("Noting to delete!!!WRONG\n");
}
else
{
x = My_queue->first->data;
p = My_queue->first;
//判断队列是否删除后为空。(易忽略)
if(My_queue->first == My_queue->rear)
{
My_queue->first = NULL;
My_queue->rear = NULL;
free(p);
}
else
{
My_queue->first = My_queue->first->next;
free(p);
}
return My_queue;
}
}

2、带头结点队列和不带头结点队列区别


http://www.eefocus.com/ayayayaya/blog/10-06/191475_b58e3.html

队列是一种特殊的线性表,它只允许在表头进行删除操作,而在表尾进行插入操作,是一种先进先出的数据结构。

队列可以采用数组存储,也可以采用链式存储。关于链式存储常见的又有两种:带头结点和不带头结点。我们建议采用带头结点的实现方式,因为,这样可以大大简化对队列的处理。

下面以入队操作为例,对本文观点进行了进一步的阐述。假设基本结构的定义为:


typedef int datatype;
typedef struct
node
{
datatype data;
struct node*
next;
}listnode, *
linknode;
typedef struct

{
linknode front;
linknode rear;
}linkqueue;

带头结点的链队入队实现:


//带头结点的链队入队实现:
void enqueue(linkqueue* q, datatype x)
{
linknode p = (linknode)malloc(sizeof(listnode));
p->data = x;
p->next = NULL;
q->rear->next = p;
q->rear = p;
}

不带头结点的链队入队实现:


//不带头结点的链队入队实现:
void enqueue(linkqueue*
q, datatype x){
linknode p = (linknode)malloc(sizeof
(listnode));
p->data =
x;
p->next =
NULL;
if(q->front ==
NULL)
{
q->front =
p;
q->rear =
p;
return
;
}
q->rear->next =
p;
q->rear =
p;
}

比较上面两段程序,带头结点的链队的入队操作,只要把新生成的结点加到尾结点后即可。而不带头结点的操作则还要注意到边界操作,假如是第一次入队,需修改队头指针。同样的道理,对于出队操作,假如是最后一个结点出队,需要注意修改队尾指针。由此,我们建议链式队列最好采用带头结点的实现方式

20140503,布布扣,bubuko.com

时间: 2024-10-07 03:30:13

20140503的相关文章

五一成都峨眉山三日游 20140501~20140503

图中天蓝色的为山路, 蓝紫色的为公路.公路和山路相交的地方就是山门(入山处)了,峨眉山共有5处山门入山.从山脚处的报国寺(左下角)一直往上,最高的在接引殿处(右上角). 1 路费要多少钱? 你有必要先知道:峨眉山市有三个专业汽车站.一个中心站,在火车站附近:一个城北车站,在太泉广场的夹峨路口:还有一个在报国寺景区,为旅游车站. 成都-峨眉车站(不是峨眉报国寺车站) ¥43 金顶-峨眉报国寺车站 ¥50 峨眉报国寺车站-成都 ¥50 2 门票多少钱?在哪里买票?能逃票吗? 进山门票:¥180 (学

20140503 图像减

图像减的思路: 1 选择路径 源图像和源图像1 保存路径 2 选择两个比较图像都是:0-1-1子图像,通过sift获取匹配数据进行保存容器中. 3 将容器中的数据进行筛选 得到准确的匹配数据 4 对源图像1进行移动,先移动Y,在移动X,移动Y时都是先生成一大列模版,一个子图片子图片复制,注意处理最后一个 5 源图像减去源图像1 对应的子图像,得到结果

20140503朗沃

今天把前几天做的ATM机中转帐功能不能识别错误帐号进行了修复,看了一下之前的知识点

RedHat5.9下搭建FTP服务器

FTP服务:基于C/S结构的文件传输协议 FTP会话属于复合TCP连接: 控制连接:TCP 21端口,发送FTP命令信息 数据连接:TCP 20端口,上传/下载数据 实验环境: Linux Client -----RHEL5.9(vmnet1)----------(vmnet1) Win7 Client 一. 实验要求:配置可匿名上传FTP服务 1.安装软件包 [[email protected] ~]# rpm -q vsftpd package vsftpd is not installed

zabbix API 获取CPU 信息

curl -i -X POST -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","method":"user.login","params":{"user":"william","password":"[email protected]#"},"auth

工作记录

 20140428  6 20140505 9 20140512 4 20140519 11 20140526 8  20140429  5 20140506 10 20140513 6 20140520 10 20140527 11  20140430  6 20140507 14 20140514 7 20140521 10 20140528 9 20140501 6 20140508 4 20140515 9 20140522 10 20140529 11 20140502 5 20140

How To use RHEVM Command Line?

本文简单的描述下如何连接rhev shell以及简单的使用.关于更详细的用法请参考官方文档. 1.如何连接到rhevm? 要想连接到rhevm,必须拥有一个有效的证书.此证书一般安装完rhevm后会自动产生.下面是如何获取到证书. [[email protected] ~]# wget -O rhevm.cer http://rhevm.xzxj.edu.cn/ca.crt --2014-05-02 09:29:34-- http://rhevm.xzxj.edu.cn/ca.crt Resol

运行startx后Ubuntu密码正确进不去的问题

今天在命令行里敲了 startx ,然后系统重启,输入密码后,跳转到一下界面,之后又返回到登陆界面.一直这样循环输入密码,进不去系统. 然后不得不用手机在网上查找解决办法. 解决步骤如下: 1,Ctrl+Alt+F3 切换到控制台登陆 2,cd~ 3,rm -rf .Xaut* 4, Ctrl+Alt+F7回到登陆界面,输入密码正常登陆. 进不去的原因是什么? 在tty执行startx会生成的一个文件,ubuntu的登陆器是lightdm,这个登陆器发现你家目录里有这个文件就会死循环,让你无限输

佩玛&#183;丘卓:修炼平等心

http://mp.weixin.qq.com/s?src=3&timestamp=1483270063&ver=1&signature=ebV8t7UKCD7hpM3fkY7rw8NyfgC*1pHe5o8SpOJkuKmP2-L-aXbllOSVu6QqLNsfN5BnJNT2i9O4IHKvU*9TqLar*EOUI2dxzBS7Uv2hr1yRgR-UMcgMnxFBIDlThEt*SuysG5BnklpzPogl9NZ*1g== 2014-05-03