数据结构——链队列——2016_12_27

来源:互联网 发布:淘宝 iphone att群 编辑:程序博客网 时间:2024/06/06 00:55

链队列源代码(C语言版)



/*********实现了初始化,插入,删除,销毁,退出等功能*********/


#include<stdio.h>#include<stdlib.h>//定义节点typedef struct QNode{   int data;   struct QNode * next;}QNode,*QueuePtr;//定义队头和队尾typedef struct {   QueuePtr front;   QueuePtr rear;}LinkQueue;//初始化队列void InitQueue(LinkQueue *Q){   if(Q->front=Q->rear=malloc(sizeof(QNode)))   Q->front->next=NULL;   else    exit(0);}//销毁队列void DestroyQueue(LinkQueue * Q){while(Q->front){  Q->rear=Q->front->next;  free(Q->front);  Q->front=Q->rear;}   printf("销毁完成!\n");}//插入节点void InsertQueue(LinkQueue * Q,int e){    QueuePtr q;q=malloc(sizeof(QNode));if(!q)exit(0);q->data=e; q->next=NULL;Q->rear->next=q;Q->rear=q;}//删除节点void DeleteQueue(LinkQueue * Q){    QueuePtr p;p=Q->front->next;Q->front->next=p->next;if(Q->rear==p)Q->rear=Q->front;free(p);}//打印队列void PrintQueue(LinkQueue Q){    QueuePtr p;if(Q.front==Q.rear){printf("队列空\n");  }    printf("_____________________________________________________________________________\n");p=Q.front->next;while(p->next!=NULL){printf("%d ",p->data);    p=p->next;    }printf("%d\n",p->data);    printf("———————————————————————————————————————\n");}//主函数int main(){int i,x,v;     LinkQueue Q;     InitQueue(&Q); for(i=1;i<=12;i++){     InsertQueue(&Q,i); }     printf("十二个节点的链队列已初始化完成!\n"); PrintQueue(Q); printf("请输入操作序号1.插入  2.删除  3.销毁  4.退出\n");     scanf("%d",&x); while(x!=0){ switch(x){ case 1:printf("请输入要插入的数值:");    scanf("%d",&v);                InsertQueue(&Q,v);PrintQueue(Q);break; case 2:printf("正在删除:\n");    DeleteQueue(&Q);PrintQueue(Q);break; case 3:printf("正在销毁...\n");    DestroyQueue(&Q);         case 4:exit(0); default:printf("输入参数有误,请重新输入!\n"); }         printf("请输入操作序号1.插入  2.删除  3.销毁  4.退出\n");     scanf("%d",&x); }return 0;}


程序截图:





    联系邮箱:xhsgg12302@outlook.com

                                                                                         2016_12_27

0 0