程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 隊列的線性存儲結構

隊列的線性存儲結構

編輯:C++入門知識

這個程序花了我非常大的時間,結果證明書本上的例子沒有我這個好,嘿嘿。。。屌炸天
[cpp]
#include <STDIO.H>  
#include <STDLIB.H>  
typedef int ElemType; 
typedef struct LQNode 

    ElemType data; 
    struct LQNode *next; 
}LqueueNode; 
typedef struct 

    LqueueNode *rear; 
    LqueueNode *front; 
}LinkQueue; 
//初始化  
void InitLQueue(LinkQueue *Q) 

    Q->rear=NULL; 
    Q->front=NULL; 

//入隊  
int EnLQueue(LinkQueue *Q,ElemType x) 

    //把數據原色x值插入不帶頭節點的鏈隊列Q的隊尾,入隊成功則返回1,否則返回0  
    LqueueNode *p; 
    p=(LqueueNode *)malloc (sizeof(LqueueNode)); 
    p->data=x; 
    p->next=NULL; 
    if(Q->rear==NULL) 
        Q->rear=Q->front=p; 
    else 
    { 
        Q->rear->next=p; 
        Q->rear=p; 
    } 
    return 1; 

//出隊  
int DelQueue(LinkQueue *Q,ElemType *x) 

    //刪除隊列的隊頭元素,用x返回其值  
    LqueueNode *q; 
    if(Q->front==NULL){ 
        printf("Queue is empty!"); 
        return 0; 
    }    
    *x=Q->front->data; 
    q=Q->front; 
    Q->front=Q->front->next; 
    if(Q->front==NULL) 
        Q->rear=NULL; 
    free(q); 
    return 1;    

void print(LinkQueue Q) 

    //顯示隊列中的所有元素  
    printf("The queue elements are:\n"); 
    while(Q.front!=Q.rear) 
    { 
        printf("%d",Q.front->data); 
        Q.front=Q.front->next; 
    }  
    printf("%d",Q.rear->data); 
    printf("\n"); 
    /*  if(Q->front==Q->rear)
    printf("空隊列,沒有元素");
    else{
    printf("該循環隊列各元素依次為:");
    for(int k=0;k<QueueLength(Q);k++)
    {
    printf("%d",Q->front->data);
    Q->front=Q->front->next;
    }
}*/ 

 
void main() 

    LinkQueue LQ; 
    int j,x; 
    InitLQueue(&LQ); 
    printf("Input a integer\n"); 
    scanf("%d",&j); 
    while(j!=0) 
    { 
        if(j%2==1) 
            EnLQueue(&LQ,j); 
        else 
            DelQueue(&LQ,&x); 
        print(LQ); 
        printf("Input a integer\n"); 
        scanf("%d",&j);      
    } 

#include <STDIO.H>
#include <STDLIB.H>
typedef int ElemType;
typedef struct LQNode
{
 ElemType data;
 struct LQNode *next;
}LqueueNode;
typedef struct
{
 LqueueNode *rear;
 LqueueNode *front;
}LinkQueue;
//初始化
void InitLQueue(LinkQueue *Q)
{
 Q->rear=NULL;
 Q->front=NULL;
}
//入隊
int EnLQueue(LinkQueue *Q,ElemType x)
{
 //把數據原色x值插入不帶頭節點的鏈隊列Q的隊尾,入隊成功則返回1,否則返回0
 LqueueNode *p;
 p=(LqueueNode *)malloc (sizeof(LqueueNode));
 p->data=x;
 p->next=NULL;
 if(Q->rear==NULL)
  Q->rear=Q->front=p;
 else
 {
  Q->rear->next=p;
  Q->rear=p;
 }
 return 1;
}
//出隊
int DelQueue(LinkQueue *Q,ElemType *x)
{
 //刪除隊列的隊頭元素,用x返回其值
 LqueueNode *q;
 if(Q->front==NULL){
  printf("Queue is empty!");
  return 0;
 } 
 *x=Q->front->data;
 q=Q->front;
 Q->front=Q->front->next;
 if(Q->front==NULL)
  Q->rear=NULL;
 free(q);
 return 1; 
}
void print(LinkQueue Q)
{
 //顯示隊列中的所有元素
 printf("The queue elements are:\n");
 while(Q.front!=Q.rear)
 {
  printf("%d",Q.front->data);
  Q.front=Q.front->next;
 }
 printf("%d",Q.rear->data);
 printf("\n");
 /* if(Q->front==Q->rear)
 printf("空隊列,沒有元素");
 else{
 printf("該循環隊列各元素依次為:");
 for(int k=0;k<QueueLength(Q);k++)
 {
 printf("%d",Q->front->data);
 Q->front=Q->front->next;
 }
}*/
}

void main()
{
 LinkQueue LQ;
 int j,x;
 InitLQueue(&LQ);
 printf("Input a integer\n");
 scanf("%d",&j);
 while(j!=0)
 {
  if(j%2==1)
   EnLQueue(&LQ,j);
  else
   DelQueue(&LQ,&x);
  print(LQ);
  printf("Input a integer\n");
  scanf("%d",&j);  
 }
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved