链队基本操作及打印杨辉三角

来源:互联网 发布:js 列表添加元素 编辑:程序博客网 时间:2024/06/16 12:34
#include "stdio.h"#include <malloc.h>typedef struct Node/*结点类型定义*/{int data;struct Node * next;}LinkQueueNode;typedef struct/*链队的类型定义*/{LinkQueueNode * front;LinkQueueNode * rear;}LinkQueue;LinkQueue * init_LinkQueue(LinkQueue * Q)/*初始化*/{Q->front=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));if(Q->front!=NULL){Q->rear=Q->front;Q->front->next=NULL;}return Q;}void enter_LinkQueue(LinkQueue * Q,int data)/*入队*/{ LinkQueueNode * temp=(LinkQueueNode *)malloc(sizeof(LinkQueueNode)); if(temp!=NULL) { temp->data=data; temp->next=NULL; Q->rear->next=temp; Q->rear=temp; }}int delete_LinkQueue(LinkQueue * Q)/*出队*/{ LinkQueueNode * temp=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));if(Q->front==Q->rear){return NULL;}temp=Q->front->next;if(Q->front->next==Q->rear){Q->rear=Q->front;}Q->front->next=temp->next;return temp->data;}int gettop(LinkQueue * Q)/*取对顶元素*/{if(Q->front==Q->rear)return NULL;LinkQueueNode * temp=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));temp=Q->front->next;return temp->data;}void main()/*main程序入口*/{/***********************************************************int data;LinkQueue * Q=(LinkQueue *)malloc(sizeof(LinkQueue)); Q=init_LinkQueue(Q);//初始化enter_LinkQueue(Q,2);//入队 data=delete_LinkQueue(Q);//出队printf("%d\n",data);enter_LinkQueue(Q,3);//入队 data=delete_LinkQueue(Q);//出队printf("%d\n",data);int a=gettop(Q);//取队顶元素 printf("%d\n",a);************************************************************/LinkQueue * Q=(LinkQueue *)malloc(sizeof(LinkQueue));//打印杨辉三角int temp,top,i,j;int n=8; Q=init_LinkQueue(Q);//初始化enter_LinkQueue(Q,1);//第一行入列for(j=2;j<n;j++){/*N=6为例*/enter_LinkQueue(Q,1);//行首的1for(i=n-j;i>=1;i--)printf(" ");for(i=1;i<=j-2;i++){temp=delete_LinkQueue(Q);printf("%d ",temp);top=gettop(Q);enter_LinkQueue(Q,temp+top);}temp=delete_LinkQueue(Q);//删除n-1行的最后一个1printf("%d",temp);enter_LinkQueue(Q,1);//行尾的1printf("\n");  }//jforfor(i=1;i<=j;i++){temp=delete_LinkQueue(Q);printf("%d ",temp); }}

原创粉丝点击