真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用C語言怎么實現(xiàn)鏈隊列

這篇文章給大家介紹使用C語言怎么實現(xiàn)鏈隊列,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

站在用戶的角度思考問題,與客戶深入溝通,找到龍華網(wǎng)站設(shè)計與龍華網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、空間域名、虛擬主機、企業(yè)郵箱。業(yè)務(wù)覆蓋龍華地區(qū)。

#include
#include
#include
#include
typedef int Elemtype;
#include"LQueue.h"
int main()
{
 Deque head;
 instruction(head);
 return 0;
}
頭文件部分:
typedef struct Queue
{
 Elemtype data;
 struct Queue *next;
}LQnode,*LQueue;
 
typedef struct
{
 LQnode *front;
 LQnode *rear;
}Deque;
 
void Init_queue(Deque *head)  //初始化+清空操作==其實這里的清空是指將頭節(jié)點后的節(jié)點給丟棄掉 
{
 LQnode *p=NULL;
 p=(LQueue)malloc(sizeof(LQnode));
 head->front=p;
 head->rear=p; 
 p->next=NULL;
}
 
int Empty_queue(Deque *head)      //判空
{
 if(head->front->next==head->rear->next)
 return 1;
 return 0;
}
 
int Lenght_queue(Deque arrow)
{
 LQnode *p=NULL;
 int len=0;
 p=arrow.front->next;
 while(p)
 {
 len++;
 p=p->next;
 }
 return len;
}
 
void Enqueue(Deque *arrow,Elemtype e)    //入隊操作
{
 LQueue p=NULL;
 p=(LQueue)malloc(sizeof(LQnode));
 if(!p)
 {
 printf("已無更多的內(nèi)存單元得到分配!\n");
 return ;
 }
 p->data=e;
 p->next=NULL;         //插入時,隊首指針是不需要動的 
 arrow->rear->next=p;
 arrow->rear=p; 
 return ;
}
 
void Dequeue(Deque *arrow,Elemtype *e)    //出隊操作
{
 LQnode *p=NULL;
 if(Empty_queue(arrow))
 {
 printf("當(dāng)前鏈隊列為空,無法完成出隊操作!!!\n");
 return ;
 }
 p=arrow->front->next;
 (*e)=p->data;
 arrow->front->next=p->next;
 printf("元素%d已退出隊列!!!\n",*e);
 if(Lenght_queue(*arrow)==0)
 return ;            //當(dāng)最后一個元素出列以后,arrow->rear不知道指向了哪里   
 free(p);
 return ;
}
 
int Queue_top(Deque *arrow)  //返回隊首元素 
{
 if(Empty_queue(arrow))
 {
 printf("當(dāng)前鏈隊列為空,隊首元素不存在!!!\n");
 return 0;
 }
 printf("當(dāng)前隊首元素是:%d\n",arrow->front->next->data);
}
 
void Destroy_queue(Deque *arrow)  //鏈隊列的銷毀
{
 LQnode *p=NULL;
 if(Empty_queue(arrow))
 {
 printf("當(dāng)前鏈隊列為空,無須完成銷毀操作!!!\n");
 return ;
 }
 while(arrow->front->next)
 {
 p=arrow->front->next;
 arrow->front->next=p->next;
 if(Lenght_queue(*arrow)==0)
  break;   
 free(p);
 }
 printf("銷毀成功!\n");
 return ;
}
 
void Print_queue(Deque arrow)
{
 LQnode *p=NULL;
 p=arrow.front->next;
 while(p)
 {
 printf("%d ",p->data);
 p=p->next;
 }
 printf("\n");
}
 
void Modify_queue(Deque *arrow,Elemtype index,Elemtype e)  //修改函數(shù)
{
 int i=0;
 LQnode *p=NULL;
 p=arrow->front->next;
 while(inext;
 }
 p->data=e;
 printf("已完成修改操作!\n");
}
 
int Insearch_queue(Deque arrow,Elemtype e)      //查找函數(shù)
{
 LQnode *p=NULL;
 int i=1;
 if(Empty_queue(&arrow))
 {
 printf("當(dāng)前鏈隊列為空,沒有元素可查找!!!\n");
 return 0;
 }
 p=arrow.front->next;
 while(p!=NULL)
 {
 if(e==p->data)
 {
  return i;
  break;
 }
 i++;
 p=p->next;
 }
 if(p==NULL)
 printf("查找失敗,隊列內(nèi)無該元素存在!\n");
 return 0;
}
 
void instruction(Deque head)
{
 int n,m,t,a,b,len1,index;
 printf("\t\t1、隊列初始化 \n");
 printf("\t\t2、新增隊列元素\n");
 printf("\t\t3、返回隊首元素\n");
 printf("\t\t4、元素出隊列 \n");
 printf("\t\t5、查找隊列元素\n");
 printf("\t\t6、修改隊列元素\n");
 printf("\t\t7、銷毀隊列  \n");
 printf("\t\t8、隊列的長度 \n");
 printf("\t\t9、打印隊列元素\n");
 printf("\t\t10、退出程序  \n");
 printf("請輸入你所需要完成的指令:\n");
 do{
 scanf("%d",&n);
 if(n<1||n>10)
  printf("對不起,你輸入的指令編號是無效的,請重新輸入!!!\n");
 }while(n<1||n>10);
 switch(n)
 {
 case 1:
  Init_queue(&head);
  printf("已完成鏈隊列初始化,請輸入你要添加的元素個數(shù)!\n");
  scanf("%d",&n);
  while(n--)
  {
  int x;
  scanf("%d",&x);
  Enqueue(&head,x);
  }
  printf("完成建隊操作!\n");
  break;
 case 2:
  printf("請輸入你要添加的元素個數(shù)!\n");
  scanf("%d",&n);
  while(n--)
  {
  int x;
  scanf("%d",&x);
  Enqueue(&head,x);
  }
  printf("增添成功!\n");
  break;
 case 3:
  Queue_top(&head);
  break;
 case 4:
  Dequeue(&head,&t);
  break;
 case 5:
  printf("請輸入你所要查找的元素:\n");
  scanf("%d",&m);
  index=Insearch_queue(head,m);
  if(index)
  printf("你所要查找的元素位于隊列的第%d個位置上!!!\n",index);
  break;
 case 6:
  printf("請輸入你更改的元素隊列位置:\n");
  do{
  scanf("%d",&a);
  if(a<1||a>Lenght_queue(head))
   printf("對不起,你所輸入的元素位置不在區(qū)域內(nèi),請重新輸入!!!\n");
  }while(a<1||a>Lenght_queue(head));
  printf("請輸入修改后的值:\n");
  scanf("%d",&b);
  Modify_queue(&head,a,b);
  break;
 case 7:
  Destroy_queue(&head);
  break;
 case 8:
  len1=Lenght_queue(head);
  printf("當(dāng)前鏈隊列的長度為:%d\n",len1);
  break;
 case 9:
  Print_queue(head);
  break;
 case 10:
  return;
 default:
  instruction(head);
  break;
 }
 instruction(head);
}

關(guān)于使用C語言怎么實現(xiàn)鏈隊列就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


本文名稱:使用C語言怎么實現(xiàn)鏈隊列
標(biāo)題網(wǎng)址:http://weahome.cn/article/jpodch.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部