zoukankan      html  css  js  c++  java
  • 链队列及其操作

    问题: 跟之前想的不一样,以为就是个链表,结果实现时就出问题了。

         lqueue->rear要不断的后移***因此,每次入队的时候要找到lqueue->rear,因此每次入队是要后移lqueue->rear。^^

    代码:

    #include <iostream>
    #include <cstdlib>
    using namespace std;
    
    typedef struct LinkQueue
    {
    	int data;
    	struct LinkQueue *front;
    	struct LinkQueue *rear;
    }*LQueue;
    
    void initLQueue(LQueue &lqueue)
    {
    	lqueue=(LQueue)malloc(sizeof(struct LinkQueue));
    	if(!lqueue)
    	{
    		cout<<"allocate fail"<<endl;
    		exit(-1);
    	}
    	else
    	{
    		lqueue->front=lqueue->rear=NULL;
    	}
    
    }
    
    void enQueue(LQueue lqueue,int elem)      //入队
    {
    	LQueue node,temp;
    
    	node=(LQueue)malloc(sizeof(struct LinkQueue));
    	if(!node)
    	{
    		cout<<"allocate fail"<<endl;
    		exit(-1);
    	}
    	else
    	{
    		node->data=elem;
    		node->front=node->rear=NULL;
    		if(lqueue->front==NULL)
    		{
    			temp=lqueue;
    			temp->front=node;
    			temp->rear=node;
    		}
    		else
    		{
    			temp=lqueue->rear;
    			temp->rear=node;
    			lqueue->rear=node;
    		}
    	}
    }
    
    int deQueue(LQueue lqueue)
    {
    	LQueue p;
    	int elem;
    	if(lqueue->front!=NULL)
    	{
    		if(lqueue->front->rear!=NULL)
    		{
    		p=lqueue->front;
    		lqueue->front=p->rear;
    	    elem=p->data;
    		free(p);
    		}
    		else
    		{
    			p=lqueue->front;
    			elem=p->data;
    			lqueue->front=lqueue->rear=NULL;
    			free(p);
    		}
    		return elem;
    	}
    	return 0;
    }
    
    int GetHead(LQueue lqueue)
    {
    	int elem;
    	if(lqueue->front!=NULL)
    	{
    		elem=lqueue->front->data;
    		return elem;
    	}
    	return 0;
    }
    int main()
    {
    	LQueue lqueue;
    	int arr[]={9,3,21,11,70,13,8,2,6};
    	initLQueue(lqueue);
        
    	for(int i=0;i<9;i++)
    	{
    		enQueue(lqueue,arr[i]);
    	}
    
    	cout<<"队头元素是 "<<GetHead(lqueue)<<endl;
    	while(lqueue->front!=NULL)
    	  {
    		cout<<deQueue(lqueue)<<" | ";
    	  }
    	cout<<endl;
    	return 0;
    }
    

      

    运行结果:

  • 相关阅读:
    紧急项目处理方法(转)
    最佳窗体间传送数据的方法,同时可适用于其他传值方式
    一周七句
    电子书下载:Beginning Silverlight 5 in C# 4th
    ERP专业词汇集合
    电子书下载:CRM Fundamentals
    电子书下载:Programming Entity Framework DbContext
    电子书下载:Data Mining Techniques in CRM
    C#+.Net使用RemObjects建立客户端服务端
    1033,2052 是什么意思?
  • 原文地址:https://www.cnblogs.com/xshang/p/3035615.html
Copyright © 2011-2022 走看看