插入字母(链式队列应用)

来源:互联网 发布:windows webpack 编辑:程序博客网 时间:2024/04/30 02:16
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Word
{
 char word;
 int woca;
 struct Word *next;
}word,* Pword;
typedef struct queue
{
 Pword front;
 Pword rear;
}Queue,* Pqueue;
void init_queue(Pqueue Q)
{
 Q->rear=Q->front=(Pword)malloc(sizeof(word));
 if(Q->rear==NULL)
 {
  printf("分配内存失败!");
  exit(-1);
 }
 Q->front->next=NULL;
}
void en_queue(Pqueue Q,char val)
{
 Pword S;
 S=(Pword)malloc(sizeof(word));
 S->word=val;
    S->next=NULL;
 Q->rear->next=S;
 Q->rear=S;
}
bool de_queue(Pqueue Q)
{
 Pword S=Q->front->next;
 if(Q->front==Q->rear)
  return false;
 else
 {
  {
   Q->front->next=S->next;
   free(S);
   S->next=NULL;
  }
  return true;
 }
}
bool traverse_queue(Pqueue Q)
{
 Pword S;
    S=Q->front->next;
 if(Q->front==Q->rear)
  return false;
 else
 {
  while(S!=Q->rear->next)
  {
   printf("%c",S->word);
   S=S->next;
  }
  printf("\n");
  return true;
 }
}
int main()
{
 char val;
 int i,n,m;
 char k;
 Queue Q;
 init_queue(&Q);
 for(i=1;i<=26;i++)
 {
        scanf("%c",&val);
  getchar();
  en_queue(&Q,val);
 }
 scanf("%d",&n);
 getchar();
 for(i=1;i<=n;i++)
 {
           k=getchar();
     getchar();
     if(k%2)
              en_queue(&Q,k);
     else
              de_queue(&Q);
 }  
 traverse_queue(&Q);
 return 0;
}
0 0
原创粉丝点击