关于经典停车场问题指针输出乱码问题?

老师布置的作业 ,经典停车场问题

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
struct stackstruct                     /*栈的结构体*/
{
    int id;
    int time;
    struct stackstruct *pre;
    struct stackstruct *next;
};

struct queuestruct //队列结构体
{
    int id;
    struct queuestruct *next;
};

struct stackstruct *stackhead1, *stackend1;
struct stackstruct *stackhead2, *stackend2;
struct queuestruct *queuehead, *queueend;
int stack1count, stack2count;            /*栈中元素总数*/
int queuecount;                         /*队列中元素总数*/

void push(int flag, struct stackstruct *p)
{
    struct stackstruct *stack;
    if (flag == 0)                  /*栈1进栈操作*/
    {
        if (stack1count == 0)//栈1空
        {
            stackhead1 = (struct stackstruct *)malloc(sizeof(struct stackstruct));
            stackhead1->id = p->id;
            stackhead1->time = p->time;
            stackhead1->next = NULL;
            stackhead1->pre = NULL;
            stackend1 = stackhead1;
        }
        else
        {
            stack = (struct stackstruct *)malloc(sizeof(struct stackstruct));
            stack->id = p->id;
            stack->time = p->time;
            stackend1->next = stack;
            stack->pre = stackend1;
            stack->next = NULL;
            stackend1 = stack;
        }
        stack1count++;
    }
    else if (flag == 1)               /*栈2进栈操作,栈1出栈*/
    {
        if (stack2count == 0)//栈2空
        {
            stackhead2 = (struct stackstruct *)malloc(sizeof(struct stackstruct));
            stackhead2->id = p->id;
            stackhead2->time = p->time;
            stackhead2->next = NULL;
            stackhead2->pre = NULL;
            stackend2 = stackhead2;
        }
        else
        {
            stack = (struct stackstruct *)malloc(sizeof(struct stackstruct));
            stack->id = p->id;
            stack->time = p->time;
            stackend2->next = stack;
            stack->pre = stackend2;
            stack->next = NULL;
            stackend2 = stack;
        }
        stack2count++;
    }
}

struct stackstruct *pop(int id, int time)
{
    struct stackstruct *stack;
    stack = (struct stackstruct *)malloc(sizeof(struct stackstruct));

    if (stackend1->id != id)
    {
        stack->id = stackend1->id;
        stack->time = stackend1->time;
        stack->pre = stackend1->pre;
        stackend1=NULL;
        stackend1 = stack->pre;
        stackend1->next = NULL;
        stack1count--;
    }
    else
    {
        stack->id = stackend1->id;
        stack->time = stackend1->time;
        stack->pre = stackend1->pre;
        printf("%d号汽车出停车场\n",id);
        printf("停车场停留时间: %d\n",time - stack->time);
        printf("应该缴纳的费用(单价: 5): %d\n", 5 * (time - stack->time));
        stackend1=NULL;
        if (--stack1count == 0)
            stackend1 = stackhead1 = NULL;
        else
        {
            stackend1 = stack->pre;
            stackend1->next = NULL;
        }
        stack = NULL;
    }
    return stack;
}

struct stackstruct *pop1()//栈2元素出栈
{
    struct stackstruct *stack;
    stack = (struct stackstruct *)malloc(sizeof(struct stackstruct));

    stack->id = stackend2->id;
    stack->time = stackend2->time;
    stack->pre = stackend2->pre;
    free(stackend2);
    stackend2 = stack->pre;
    stack2count--;

    return stack;
}

void Enqueue(struct stackstruct *p)//入队
{
    struct queuestruct *queue;
    if (queuecount == 0)
    {
        queuehead = (struct queuestruct *)malloc(sizeof(struct queuestruct));
        queuehead->id = p->id;
        queuehead->next = NULL;
        queueend = queuehead;
    }
    else
    {
        queue = (struct queuestruct *)malloc(sizeof(struct queuestruct));
        queue->id = p->id;
        queue->next = NULL;
        queueend->next = queue;
        queueend = queue;
    }
    queuecount++;
}

struct stackstruct *Dequeue(int time)//出队
{
    struct stackstruct *stack;
    stack = (struct stackstruct *)malloc(sizeof(struct stackstruct));

    stack->id = queuehead->id;
    stack->time = time;
    if (--queuecount == 0)
    {
        queuehead = NULL;
        queueend = NULL;
    }
    else
        queuehead = queuehead->next;
    return stack;
}
int main()
{
    int n;
    char s = {0};
    struct stackstruct *p;
    printf("输入狭长通道可停放汽车数量: ");
    scanf_s("%d", &n);
    getchar();
    stack1count = stack2count = queuecount = 0;
    p = (struct stackstruct *)malloc(sizeof(struct stackstruct));
    printf("输入停车信息:(动作,车牌号,时间)\n");
    while (scanf_s("%c,%d%d", &s,1, &p->id, &p->time) != EOF)
    {
        if (s =='E')
        {
            printf("End");
            break;
        }
        if (s =='A')                /*汽车到达*/
        {
            if (stack1count < n)                 /*栈未满,进栈操作*/
            {
                push(0, p);
                printf("%d号汽车进入停车场\n",p->id);
                printf("进入停车场时间: %d\n",stackend1->time);
                printf("停车位置: %d\n",stack1count);
            }
            else                                /*栈满,进队列操作*/
            {
                Enqueue(p);
                printf("%d号汽车进入便道\n",p->id);
                printf("进入便道时间: %d\n",p->time);
                printf("便道位置: %d\n",queuecount);
            }
        }
        if (s =='D')                /*汽车离去*/
        {
            struct stackstruct *temp;
            while ((temp = pop(p->id, p->time)) != NULL)
            {
                push(1, temp);
            }
            while (stack2count != 0)
            {
                push(0, pop1());
            }
            if (queuecount != 0)
            {
                push(0, Dequeue(p->time));
                printf("%d号汽车进入停车场\n",stackend1->id);
                printf("进入时间: %d\n",stackend1->time);
                printf("停车位置: %d\n",stack1count);
            }
        }
    }
    return 0;
}
0

1个回答

刚学数据结构 感觉好迷啊 求大神救救我

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
指针引用经典笔试题
指针引用经典笔试题(1) 1 #include&amp;lt;malloc.h&amp;gt; 2 #include&amp;lt;string.h&amp;gt; 3 4 void GetMemory(char *p, int num) 5 { 6 p = (char *)malloc(sizeof(char) * num); 7 } 8 9 void main() 10 { 11 cha...
指针经典例题
关于指针的经典例题 上一篇博客,我基本上算是详细的介绍了一下指针,那么这篇博客就来分享几道有关指针的经典的例题。 1.代码如下,请问程序运行结果是多少? #include int main() { char *c[] = { "ENTER", "NEW", "POINT", "FIRST" }; char** cp[] = { c + 3, c + 2, c + 1, c }; ch
理解一个经典的指针小程序
分析关于指针的一个小程序#include <stdio.h> #include <stdlib.h>void f(void) { int a[4]; int *b = malloc(16); int *c; int i; printf("1: a = %p, b = %p, c = %p\n", a, b, c); c = a; for (i =
[c语言]——有关指针的经典例题
#define _CRT_SECURE_NO_WARNINGS 1 #include&amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;gt; int main() *{ int main() { int a[5] = { 1, 2, 3, 4, 5 }; int *ptr = (int *)(&amp;amp;amp;amp;amp;a + 1); printf( &amp;amp;amp;quot;%d,%d&amp;amp;
停车场问题求解(经典算法)
停车场问题求解 停车场问题求解 停车场问题求解 停车场问题求解 停车场问题求解 停车场问题求解 停车场问题求解
指针和数组经典面试题目
前言:本篇文章主要针对前边写的一篇博客深度理解指针。本篇文章是基于前边所学到的知识的一些练习题目。利用数组和指针的相关知识,解决下边的问题。 题目一:下面代码输出结果是什么 #include&amp;amp;lt;stdio.h&amp;amp;gt; int main() { int a[5] = { 1, 2, 3, 4, 5 }; int *p = (in...
经典笔试题:指针详解
1.下面代码输出结果是什么? int main() { int a[5] = { 1, 2, 3, 4, 5 }; int *ptr = (int *)(&amp;amp;a + 1); printf(&quot;%d,%d&quot;, *(a + 1), *(ptr - 1)); system(&quot;pause&quot;); return 0; } 解析: * (a + 1):此处...
C++实现停车场管理系统
有一个可以停放n 辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n 辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在他之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆在依
指针常见面试题
备注 还可参考数组一文和函数一文 数组:https://blog.csdn.net/wolf_break/article/details/78320138 函数:https://blog.csdn.net/wolf_break/article/details/78320460 指针相减 同一类型指针可以进行互减操作 int a[] = {2,4,5}; int *p...
指针的一些经典使用,项目中常用为例
1.指针函数 u8 * readData( ) {      static  u8 data_array[4];     int i;     for(i=0;i&amp;lt;4;i++)      {         data_array[i]=i;             }          return data_array; }  void ouptData( )  {    u8...
数学建模 停车场设计问题
在New England的一个镇上,有一位于街角处面积100 200平方英尺的停车场,场主请你代为设计停车车位的安排方式,即设计在场地上划线的方案。
C语言面试题---指针篇(一)
原创2017-12-22创新教育研究中心TeachPlus                                                         C语言面试题---指针篇(一) 指针的使用,一直是c语言面试题中必考的部分, 因为指针本身使用的复杂性与普适性,所以考点非常多,而且也可以与其他知识相互结合, 因此我们将会使用五篇专题的篇幅来介绍指针。分析下面的程序
关于位运算几道经典题目
之前就和同学讨论过几道位运算的题目,觉得挺有意思的,就记录一波。 这样坐着敲字总让我想起在出租房里百无聊赖的日子、 题目一: single number 问题 整型数组中只有一个整数只出现了一次,其他整数都出现了两次,找出出现一次的这个整数,并返回。 异或运算 利用异或运算整型数自身与自身异或为0的特点。 int singleNum(int[] arr){ int res...
关于java继承的一道经典面试题
package com.test; class Father{ int x = 1; public Father(){ System.out.println("father"); } public Father(String s){ System.out.println("father:"+s); } } class Son extends Father{ int x
C/C++指针讲解十余部经典资料书籍(合适初学者)
C/C++指针经典资料大全,十余部经典资料书籍,是您精通指针的理想教程 C/C++指针经典资料大全,十余部经典资料书籍,是您精通指针的理想教程 C/C++指针经典资料大全,十余部经典资料书籍,是您精通指针的理想教程 C/C++指针经典资料大全,十余部经典资料书籍,是您精通指针的理想教程 C/C++指针经典资料大全,十余部经典资料书籍,是您精通指针的理想教程
C 指针的典型例题
int a=10,b=20; 写一个函数,在函数中将a的值改变为b #include &amp;lt;stdio.h&amp;gt; void changeAToB(int *ptr,int value) { // *ptr=value; } int main(void) { int a=10,b=20; printf(&quot;a:%d b:%d\n&quot;,a,b); ...
今天教大家写一个停车场的程序
学习日志4 姓名:缪志超 日期:2018.9.13 今日学习任务 编写具有定时功能停车场的程序 今日任务完成情况: 课上程序已经基本全部完成,大部分功能都已经实现 今日问题 在停车出车的程序部分还有一些问题,需要明天来修改下! 5个子程序: 第一个文件名: main.c #include &quot;park.h&quot; #include &amp;lt;stdio.h&amp;gt...
LeetCode——关于二级指针和++/--与*的例题
(1) ++比*的优先级高,所以先++,cpp是二级指针,++cpp表示cp+2是cp指针向后移动两次,指向c+2,c+2表示&quot;POINT&quot;,所以(1)输出的是POINT(两次解引用结果是C的值)   (2) 经过(1)后cpp指向cp的c+2,也就是cp+1的位置,经过++cpp就是cp+2的位置,(从这里开始cpp的位置就不变了)cpp指针解引用为cp的c+1,c+1就是指针 指向c中...
【面试题】停车场记录
停车场记录编写一个程序,做一个建议的停车场使用数据记录仪此程序能够监听命令行的输入,命令行可以输入三类命令:(下列命令中的数值均为举例,实际使用中不会限定数值) 1:checkin -t=225959 -n=AT4257 2:checkout -t=233000 -n=AT4257 3:listrecord -all其中第一条命令代表车牌号为AT4257的汽车在22点59分59秒进入停车场
智能停车场解决方案
智能停车场解决方案 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 智能停车场是目前世界上增长最快的智慧城市解决方案。城市停车场、机场、大学、购物中心和办公写字楼逐步意识到自动泊车技术的重大好处。由于物联网及其连接、分析和自动化设备收集的数据的能力,使得智能泊车成为可能。智能泊车涉及到使用低成本的传感器、实时数据传输和移动应用程序开发,帮助用户监控可用和不可用的停车位置点。其最终目
c语言指针习题及答案
c语言中指针是较为重要的知识点,掌握指针你会更上一层楼。
数据结构实践——停车场模拟(栈和队列综合)
本文是针对数据结构基础系列网络课程(3):栈和队列的实践项目。  设停车场是一个可停放n辆汽车的狭长死胡同,南边封口,汽车只能从北边进出(这样的停车场世间少有)。汽车在停车场内按车辆到达时间的先后顺序,最先到达的第一辆车停放在车场的最南端,依次向北排开。若车场内已停满n辆汽车,则后来的汽车只能在门外的候车场上等候,一旦有车开走,则排在候车场上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入
C几个经典的关于内存的笔试题
 Getmemory的几个经典的关于内存的笔试题: [cpp] view plain copy print? void GetMemory( char *p )  {      p = (char *) malloc( 100 );  }    void Test( void )   {      char *str = NULL;      Ge
数据结构 停车场问题原码
#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;malloc.h&amp;gt; //栈的基本函数 typedef struct { int no[3]; int time[3]; int top; }sq1; void initsq1(sq1 * &amp;amp;L)//栈初始化 { L=(sq1 *)malloc(sizeof(sq1)); L-&amp;gt;top=-1...
数据结构中停车场问题
解决了数据结构中停车场问题的实现,运用到了栈、堆等结构
一些常见面试OO design题目总结
最近很多公司面试喜欢问一些OO design的题目, 我总结了一些比较高频的题目, 需求不一定准确, 设计的也不一定好, 欢迎提出建议.  1. 电梯设计  2. 停车厂设计  3. 通用卡牌游戏blackjack设计  4... 1. 电梯设计 需求:
c语言程序设计——停车场管理系统实验报告
原创的停车场管理系统实验报告,用c语言编写,供大家学习交流使用
如何管理小区停车
    如何管理小区停车?小区的停车管理是很多物业公司非常头疼的问题,很多情况下都是因为前期车位规划不足以及缺乏有效的管理措施而导致的。    提到车位不足,我们都能看到这样的情景,很多时候车位不足会导致业主抢占车位,业主之间产生矛盾;停车收费明显不合理,导致许多业主干脆不交停车费,业主与物业之间矛盾严重;为增加收入,物业把小区车位向社会开放,造成安全隐患;车辆遭到损坏的,往往责任无法确定。   ...
栈与队列实现停车场问题
使用栈和队列实现停车场问题 申明:代码我是运行成功了的,但是直接复制粘贴是肯定运行不了的,嘻嘻嘻。没想到吧O(∩_∩)O。那么接下来我将为大家介绍代码内容。 首先,实现栈与队列的基本功能。 实现栈与队列的首要条件便是结构体的配置,以下是带了注释的配置。(我们此处采用的是链表栈已经顺序队列) 队列图示 栈图示 /* * To change thi...
数据结构实验-停车场模拟系统
说明: 在大二小学期,老师布置了一个数据结构实验,小组成员花了大概一周完成了实验,代码可能有不少bug,望指出,谢谢。 问题描述: 模拟一个停车场系统。停车场根据停车的占地面积进行收费。我们假设一个停车场存在大、中、小三种车型的停车位。当有车辆进入停车场时,登记车的型号,车牌以及时间,并将车停放在停车场内。当取车时,输入车牌号,取出相应的车,并记录现在时间,根据停车时间收取费用。
用栈和队列实现的停车场管理系统
停车场管理 问题描述:停车场是一个能放 n 辆车的狭长通道,只有一个大门,汽车按到达 的先后次序停放。若车场满了,车要停在门外的便道上等候,一旦有车走,则便 道上第一辆车进入。当停车场中的车离开时,由于通道窄,在它后面的车要先退 出,待它走后在依次进入。汽车离开时按停放时间收费。 基本功能要求: (1) 建立三个数据结构分别是:停放栈、让路栈、等候队列。 (2) 输入数据模拟管理过程
数学建模停车场
数学建模关于停车场设计,有专放小车轿车,和放大型客车两种情况
C语言之停车场
问题描述:停车场是一个能放 n 辆车的狭长通道,只有一个大门,汽车按到达的先后次序停放。若车场满了,车要停在门外的便道上等候,一旦有车走,则便道上第一辆车进入。当停车场中的车离开时,由于通道窄,在它前面的车要先退出,待它走后在依次进入。  基本功能要求: (1) 建立三个数据结构分别是:停放队列、让路栈、等候队列。 (2) 输入数据模拟管理过程,数据(入或出,车号)。 //头函数(一些
数据结构之停车管理系统问题
出处:http://blog.sina.com.cn/s/blog_6d57d5290100yvcm.html 一、问题描述 设停车场只有一个可停放几辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆车要离开时,由于
关于乱码问题简单分析
关于jsp乱码问题 关于jsp乱码问题 关于jsp乱码问题关于jsp乱码问题
C++实验报告
C++实验报告指针的问题关于指针的实验报告
栈和队列实现停车场两种方案(1)
停车场管理 问题描述:停车场是一个能放n辆车的狭长通道,只有一个大门,汽车按到达的先后次序停放。若车场满了,车要停在门外的便道上等候,一旦有车走,则便道上第一辆车进入。当停车场中的车离开时,由于通道窄,在它后面的车要先退出,待它走后在依次进入。汽车离开时按停放时间收费。 基本功能要求: (1) 建立三个数据结构分别是:停放队列、让路栈、等候队列。 (2) 输入数据模拟管理过程,数据(入
(Linux C)利用多进程或多线程模拟实现生产者/消费者问题
Linux C语言 实现利用多进程或多线程模拟实现生产者/消费者问题。 (站在巨人的肩膀上)
停车场管理系统论文:嵌入式停车场管理系统.pdf
嵌入式停车场管理系统.pdf为改进基于PC的传统停车场管理系统工作于恶劣的环境中稳定性较差的问题, 提出了一种基于嵌入式 的停车场管理系统的设计方案。该方案结合MVC 模式及QT /E技术实现了友好的嵌入式终端的界面交互; 考虑到大 型停车场多进多出的工作模式, 使用心跳信号解决网络通信中常见的网络链接不稳定的状况; 利用基于线程技术的 数据采集有效保障数据采集的实时性和可靠性。经大量测试及实际使用证明, 这种新型的嵌入式停车场管理系统, 在工作稳定性上有大幅提高的同时使得停车场的成本也有所下降
停车场管理问题课程设计
#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;malloc.h&amp;gt;#include&amp;lt;string.h&amp;gt;#define TRUE 1#define FALSE 0#define Stack_Size 2//车辆信息typedef struct Car{    char Number[20];//车牌号    int time;//到达时刻}Car;//车库栈定...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 数据库停车场课程设计 课程设计数据库停车场