zoukankan      html  css  js  c++  java
  • 队列输入队列基本操作

    每日一贴,今天的内容关键字为队列输入

        队列是先进先出的数据结构,出队的一端叫队首,入队的一端叫队尾,就像是平常生活中排队买火车票一样,上面是队列的基本操作

        每日一道理
    生命不是一篇"文摘",不接受平淡,只收藏精彩。她是一个完整的过程,是一个"连载",无论胜利还是失败,她都不会在你背后留有空白;生命也不是一次彩排,走得不好还可以从头再来,她绝不给你第二次机会,走过去就无法回头。
    #include <stdio.h>
    #include <stdlib.h>
    
    #define OK 1
    #define ERROR -1
    #define OVERFLOW 0
    
    typedef int elemtype;
    typedef int status;
    typedef struct QNode
    {
       elemtype data;
       struct QNode *next;
    }QNode,*queuePtr;  //定义链表节点中数据
    typedef struct
    {
    	queuePtr front; //指向链表的头
    	queuePtr rear; //指向链表的尾  指向不是没有分配单元的节点
    }LinkQueue;
    
    //对队列停止初始化
    status initQueue(LinkQueue &q)
    {
       q.front=q.rear=(queuePtr)malloc(sizeof(QNode));  //创建头节点  头指针指向头节点
       if(!q.front)  //创建失败
       {
    	   exit(OVERFLOW);
       }
       q.front->next=NULL;
       return OK;
    }
    
    //销毁队列
    status  destoryQueue(LinkQueue &q)
    {
    	while(q.front)
    	{
    		q.rear=q.front->next;  //将头节点的next赋给尾指针
    		free(q.front);      //删除头节点
    		q.front=q.rear;    //重新生成为节点
    	}  
    	printf("队列销毁胜利!\n");
    	q.front=NULL;
    	return OK;  //删除完成返回OK
    }
    
    //停止元素插入
    status enQueue(LinkQueue &q,elemtype e)
    {
    	queuePtr p=(queuePtr)malloc(sizeof(QNode)); //为新元素分配空间
    	if(!p) exit(OVERFLOW); 
    	p->data=e;
    	p->next=NULL;
    	q.rear->next=p; //为尾指针的next重新赋值  将元素插入表尾
    	q.rear=p;  //重新定位尾指针
    	return OK;
    }
    
    //删除元素
    status deQueue(LinkQueue &q)
    {
    	if(q.front==q.rear) return ERROR; //此时队列为空
    	queuePtr p=q.front->next;  
    //	e=p->data;  //删除是dui首
    	q.front->next=p->next;
    	if(q.rear==p)
    		q.rear=q.front;
    	free(p);
    	printf("元素删除胜利!\n");
        return OK;
    }
    
    //获得队首元素
    status getHead(LinkQueue &q)
    {
    	queuePtr p=q.front->next;
    	printf("%d\n",p->data);
    	return OK;
    }
    
    //输出队列
    status printQueue(LinkQueue q)
    {
    	queuePtr p;
    	p=q.front->next;
    	while(p)
    	{
    	  printf("%d ",p->data);
    	  p=p->next;
    	}
    	
    	return OK;
    }
    
    int main()
    {
    	LinkQueue q;
    	int i,j,k,m;
    	initQueue(q);//停止队列的初始化:
    	printf("插入几个数据:\n");
    	scanf("%d",&i);
    	for(j=0;j<i;j++)
    	{   printf("请输入第%d个整数",j+1);
    		scanf("%d",&k);
            enQueue(q,k);
    	}
    	do
    	{
    		printf("请根据提示停止响应操作:\n");
            printf("删除元素选择输入1:\n");
    		printf("清空队列选择输入2:\n");
    		printf("输出队列选择输入3:\n");
    		printf("退出输入4:\n");
    		scanf("%d",&m);
    		switch(m)
    		{
    			case 1: deQueue(q);  break;
    			case 2: destoryQueue(q); break;
    			case 3: printQueue(q);break;
    			default: printf("请重新输入:\n");break;
    		}
    	}while(m!=4);
       return 0;
    }

        队列和输入

    文章结束给大家分享下程序员的一些笑话语录: AdobeFlash拖垮Windows拖垮IE!又拖垮Linux拖垮Ubuntu拖垮FirxEox!还拖垮BSD拖垮MacOS拖垮Safri!简直无所不拖!AdobeFlash滚出网路世界!不要以为市占有率高就可以持续出烂货产品!以后替代品多得是!

  • 相关阅读:
    JDK5.0新特性系列10.监控与管理虚拟机
    JDK5.0新特性系列7.使用ProcessBuilder执行本地命令
    JDK5.0新特性系列4.静态导入
    JDK5.0新特性系列8.泛型编程
    JDK5.0新特性系列11.2线程 任务执行架构
    JDK5.0新特性系列6.格式化输出
    Request的编码问题,客户端为繁体系统时为乱码解决了。
    智能手机之新手篇[转]
    一篇颇有感触的文章
    修复Oracle9i中DBA的密码
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3087277.html
Copyright © 2011-2022 走看看