| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
#include<stdio.h> 
#include<stdlib.h> 
 
typedef char Elemtype; 
 
typedef struct QNode          //定义队列中的一个结点结构,包含一个数据和指向下一个结点的指针 
{ 
        Elemtype data; 
        struct QNode *next; 
}QNode,*QueuePtr; 
 
typedef struct                 //定义队列结构 
{ 
        QueuePtr front,rear;        
}LinkQueue; 
 
void InitQueue(LinkQueue *q)   //函数,用于初始化一个队列 
{ 
        q->front=q->rear=(QueuePtr)malloc(sizeof(QNode)); 
        q->rear->next=NULL; 
} 
 
void InsertQueue(LinkQueue *q,Elemtype e)        //函数,用于入队列操作 
{ 
        QueuePtr p; 
        p=(QueuePtr)malloc(sizeof(QNode));           //创建一个新结点 
        p->data=e;                                    
        p->next=NULL;                     
        q->rear->next=p;                              
        q->rear=p;                                   //队列尾指针进行移动 
} 
 
void DeleteQueue(LinkQueue *q,Elemtype *e)        //函数,用于出队列操作 
{ 
        QueuePtr p; 
        if(q->front=q->rear)            //如果为空队列,返回 
        { 
                return; 
        } 
        p=q->front->next; 
        *e=p->data; 
        q->front->next=p->next; 
        if(q->rear==p)                  //如果队列只剩下最后一个元素,则该元素出队列后,尾指针指向头结点 
        { 
                q->rear=q->front; 
        } 
        free(p); 
}         
 
 
int main() 
{ 
        LinkQueue q; 
        Elemtype c,e; 
        InitQueue(&q); 
 
        printf("请输入要显示的内容,以#作为结束标志:"); 
 
        scanf("%c",&c); 
 
        while(c!='#')                //字符入队列 
        { 
                InsertQueue(&q,c); 
                scanf("%c",&c); 
        } 
         
        while(q.front!=q.rear)       //字符出队列 
        { 
                DeleteQueue(&q,&e); 
                printf("%c",e); 
        } 
        printf("\n"); 
 
 
        return 0; 
} |   
 
 
 
 |