zoukankan      html  css  js  c++  java
  • 链式队列的c++代码和原理以及编译分析

    链式队列代码:

    编译分析:

    1文件结构:

    image  image

    在初步编写mian

    #include<iostream.h>
    #include<iomanip.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<malloc.h>
    #include"linkqueue.h"
    void mian ()
    {

    }

    编译成功:

    接下来就测试一下是不是真的奏效:

    接下来出错啦

    事实说明,文件之间的构建是一个不小问题;

    之后,发现是main写错成mian,事实证明这是一个容易写错的单词

    调试结果如下:证实全部数据入队:

    image

     image

    这个测试证明在出队操作中,我们一个写法是错的.

    if(rear==p) rear=NULL;
        cerr<<"队列只有一个节点\n";

    修改为

    if(rear==p)

    {rear=NULL;
        cerr<<"队列只有一个节点\n";


    队列链式实现的原理:

    1:在队列中插入一个元素为x的新队尾结点:

    void linkqueue::enqueue(datatype x)
    //
    {
        queuenode *p;
        p=(queuenode *malloc(sizeof(queuenode));//
        p->data=x;
        p->next=NULL;
        if((!queueempity()){ rear->next=p; rear=p;}
            else front=rear=p;
        count++;
    }

    定义指针,申请空间,赋值,完成第一步工作.

    关键在第二步:

    这个问题可以查阅相关课件资料:

    image

    2 在队列中实现出队操作的原理:

    datatype linkqueue::dequeue()
    {   cerr<<"出队操作,你在调用linkqueue::dequeue()函数\n";
        datatype x;
        queuenode *p=front;
        if(queueempty())
        {  cerr<<"队列已经空了\n";exit(1); }
        cerr<<"删除队头,返回队头数据\n";
        x=p->data;
        front=p->next;
        if(rear==p) rear=NULL;
        cerr<<"队列只有一个节点\n";
        count--;
        delete p;
        return x;
    }

  • 相关阅读:
    v-bind v-on
    v-cloak v-text v- html
    centos 6.9安装 jdk
    容器数据卷创建
    MySQL 索引设计概要
    SQL EXPLAIN解析
    数据库范式(1NF/2NF/3NF)
    MySQL索引原理及慢查询优化
    InnoDB 的记录结构和页结构
    mysql explain type详解
  • 原文地址:https://www.cnblogs.com/fleetwgx/p/1448494.html
Copyright © 2011-2022 走看看