⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 代码.txt

📁 判断队列是否唯恐
💻 TXT
字号:
//用循环单链表实现队列的基本操作
//算法的实现:
#include
#include
#include

typedef int DateType; 
struct Node;
typedef struct Node *PNode;

struct Node//结点结构
{
 DateType info;
 PNode link;
};
//函数声明
int isEmptyQueue_link(PNode &p);
void enQueue_link(PNode &p,DateType x);
void deQueue_link(PNode &p);
DateType frontQueue_link(PNode &p);
void scan_link(PNode &p);


//主函数
void main()
{
  PNode head=NULL;
  int i=1,x,y;
 while(i)
{
 printf("**********************************************************************\n");
 printf("请选择:1 判断队列是否为空 2 进队列 3 出队列 4 取队列头部元素的值\n");
 printf("        5 遍历队列 0 退出程序\n");
 printf("**********************************************************************\n");
   scanf("%d",&i);
 
  switch(i)
    {case 1:y=isEmptyQueue_link(head);
            if(y==1)
       printf("队列为空!\n");
      else printf("队列非空!\n");
      break;
        case 2:printf("请你输入进队列的元素值: ");
      scanf("%d",&x);
      enQueue_link(head,x);
      break;
  case 3:deQueue_link(head);
      break;
  case 4:y=frontQueue_link(head);
      if(y!=65535)
      printf("队列头部元素的值为:%d\n",y);
      break;
  case 5:scan_link(head);
      break;
  
  default:if(i!=0)
       printf("选择有错!请你重新选择!\n");
  }        
 }
}
int isEmptyQueue_link(PNode &p)//判断队列是否为空
{
 return(p==NULL);
}
void enQueue_link(PNode &p,DateType x)//入队列
{
 
        PNode flag=NULL;//flag 始终指向第一个结点
        PNode q=NULL;
 if(p==NULL)//创建第一个结点
 {if((p=(PNode)malloc(sizeof(struct Node)))==NULL)
              printf("空间分配失败!\n");
  p->info=x;
  p->link=p;//头指针p 始终指向尾结点
  flag=p;
 }
 else //创建其他结点
               {   flag=p->link;//在改变头指针指向前使flag始终保持指向首结点
                  q=p;
      if((p=(PNode)malloc(sizeof(struct Node)))==NULL)
              printf("空间分配失败!\n");
        p->info=x;
          q->link=p;
          p->link=flag;}
}
void deQueue_link(PNode &p)//出队列
{
 PNode q;
 if(p==NULL)
  printf("队列为空的!\n");
 else 
   if(p->link==p)//只有一个结点的删除处理
   {free(p);
   p=NULL;}
   else //两个或者两个以上结点的时候的删除处理
   {    q=p->link;
        p->link=p->link->link; 
        free(q);
                  
   }
}
DateType frontQueue_link(PNode &p)//取队列头部元素值
{
 if(p==NULL)
 {printf("队列是空的!\n");
  return 65535;//返回一个特殊值
 }
 else return(p->link->info);
}
void scan_link(PNode &p)//遍历队列
{
 PNode q;
 int i=1;
    if(p==NULL)
      printf("队列是空的!\n");  
 else 
 {   for(q=p->link;q!=p;q=q->link)
  printf("第%d个元素是 %d\n",i++,q->info);
     printf("第%d个元素是 %d\n",i++,q->info);
 }
}
//


更多精彩源码尽在源码中国cn700.com

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -