链队的基本操作

链队的基本操作:

1,存储结构:

2,创建链式队列:

3,队尾插入,队首删除:

4,遍历操作:

typedef int QElemType;
typedef  struct  node
{
    int data;
    struct  node *next;
}QNode,*QueuePre;

typedef struct
{
    QueuePre Front;
    QueuePre  rear;
}LinkQueue;

void  CreatQueue(LinkQueue  &Q)
{
    Q.rear=(QueuePre)malloc(sizeof(QNode));
    Q.Front=Q.rear;
    if(!Q.Front)  exit(-2);
    Q.rear->next=NULL;
}

void EnQueue(LinkQueue  &Q,int e)
{
    QueuePre p;
    p=(QueuePre)malloc(sizeof(QNode));
    if(!p)  exit(-2);
    p->data=e;
    p->next=NULL;
    Q.rear->next=p;
    Q.rear=p;
}

void DeleQueue(LinkQueue &Q,int &e)
{
    QueuePre p;
    if(Q.Front==Q.rear) return ;
    p=Q.Front->next;
    e=p->data;
    Q.Front->next=p->next;
    if(Q.rear==p) Q.rear=Q.Front;
    free(p);
}

void  TraverseQueue(LinkQueue &Q)
{
    if(Q.rear==Q.Front) return;
    QueuePre  p;
    p=Q.Front->next;
    while(p)
    {
        printf("%d ",p->data);
        p=p->next;
    }
}
时间: 2024-10-05 13:34:09

链队的基本操作的相关文章

DS之顺序栈和链队实现回文判断

顺序栈和链队的基本操作就不再一一列举了,要想实现回文判断,先来了解什么是回文?"回文"一字符串正着读和反着读是相同的字符序列,如"abcba","abba"为"回文","abab"则不是"回文". 其次就是顺序栈和链队如何实现回文的判断?将输入的字符串依次入栈和入队,然后再依次出栈和出队,由于入栈和入队是相同的序列,然而出栈和出队是相反的序列,这就实现了回文的判断. 最后考虑要用到顺序栈

Java实现链队

一.分析 队列是一种先进先出的线性表,它只允许在表的一端进行插入,而在另一端删除元素.允许插入的一端称为队尾,允许删除的一端称为队头. 链队是指采用链式存储结构实现的队列,它的基本操作如下: 1.初始化链队 2.销毁链队 3.清空链队 4.检测链队是否为空 5.返回链队的元素个数 6.返回链队头元素 7.向队尾插入元素 8.删除并返回队头元素 9.遍历链队 通常链队用单链表来表示,但一个链队还需要两个分别指示队头和队尾的指针才能唯一确定,和单链表一样,为了便于操作,附设一个头结点来指示队头. 在

判断一个字符串是否为回文-链队(新建,进队,出队),链栈(新建,进栈,出栈)

回文:字符对称排列的字符串,例如ABCBA 思路:根据队:先进先出和栈: 先进后出的原则,进行比较出队和出栈的字符是否相等.如果相等,则为回文. 创建控制台应用程序. 1 #region 字符节点类 2 class CharNode 3 { 4 public char Char //字符 5 { 6 get; 7 set; 8 } 9 public CharNode Next //下一节点 10 { 11 get; 12 set; 13 } 14 public CharNode(char Cha

链栈的基本操作

链栈的基本操作实现代码如下: #include<iostream> using namespace std; #define TRUE 1 #define FALSE 0 //链栈的结构 typedef struct node { int data; struct node *next; }LinkStackNode; typedef LinkStackNode *LinkStack; //链栈进栈 int Push(LinkStack top, int x)//将数据元素x压入栈top中 {

数据结构-链队

1 #include <iostream> 2 #include <stdlib.h> 3 4 using namespace std; 5 6 typedef struct QNode 7 { 8 int data; 9 struct QNode *next; 10 }QNode; //队结点 11 typedef struct 12 { 13 QNode *front; 14 QNode *rear; 15 }LiQueue;//链队类型 16 17 void InitQueu

数据结构之自建算法库——链队(链式队列)

本文针对数据结构基础系列网络课程(3):栈和队列中第10课时队列的链式存储结构及其基本运算的实现. 按照"0207将算法变程序"[视频]部分建议的方法,建设自己的专业基础设施算法库. 链队算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:liqueue.h,包含定义链队数据结构的代码.宏定义.要实现算法的函数的声明: #ifndef LIQUEUE_H_INCLUDED #define LIQUEUE_H_INCLUDED typedef char ElemType; typ

循环队列的初始化、入队、出队等基本操作

循环队列的初始化.入队.出队等基本操作,实现代码如下: #include<iostream> using namespace std; #define TRUE 1 #define FALSE 0 //循环队列的类型定义 #define MAXSIZE 50//队列的最大长度 typedef struct { int element[MAXSIZE];//队列的元素空间 int front;//头指针指示器 int rear;//尾指针指示器 }SeqQueue; //循环队列初始化 void

链式队列基本操作的实现问题

问题描述:用链式存储方式实现队列的基本操作 涉及变量:front:Node型自定义变量,指向队首元素 rear:Node型自定义变量,指向队尾元素 涉及教材:<数据结构--Java语言描述(第2版)> 清华大学出版社 大致思路: 链式存储结构不害怕出队列会浪费空间,因此也不需要要循环结构来节约空间 front为指向队首结点的指针 rear为指向队尾结点的指针 初始化时它们均指向空 初始化代码如下: 队列的置空方法与初始化相类似 而判断队列是否为空只需要判断队首指针是否指向非空元素即可 代码如下

C++实现链栈的基本操作

之前对顺序栈写了基本操作,觉得有必要也动手练练栈的链表实现. 对于链栈,一般不会出现栈满的情况. 链栈头文件定义如下: #ifndef CSTOCK_H_ #define CSTOCK_H_ typedef int elemType; struct Item { elemType data; Item * p_next; }; class CStock { public: CStock(); CStock(const CStock & otherStock); //拷贝构造函数: CStock