数据结构循环队列以及打印杨辉三角

来源:互联网 发布:js转义html的特殊字符 编辑:程序博客网 时间:2024/05/17 15:59
#include "stdio.h"#include"malloc.h"#include"stdlib.h"#define OK 1#define ERROR 0#define OVERFLOW -1#define maxsize 100typedef int QElemType;typedef int Status;/******************struct****************/typedef struct{QElemType *base;int front;int rear;}SqQueue;/*****************init*******************/Status InitQueue_Sq(SqQueue *Q){Q->base=(QElemType *)malloc(maxsize*sizeof(QElemType));if(!Q->base)exit(OVERFLOW);Q->front=Q->rear=0;return OK;}/****************enqueue*****************/Status EnQueue_Sq(SqQueue *Q,QElemType e){if((Q->rear+1)%maxsize==Q->front)exit(0);Q->base[Q->rear]=e;Q->rear=(Q->rear+1)%maxsize;return OK;}/****************dequeue*****************/Status DeQueue_Sq(SqQueue *Q,QElemType *e){if(Q->rear==Q->front)exit(0);*e=Q->base[Q->front];Q->front=(Q->front+1)%maxsize;return OK;}Status GetFront(SqQueue Q,QElemType *e){if(Q.rear==Q.front)exit(0);*e=Q.base[Q.front];return OK;}/****************Qlength*****************/int QueueLength(SqQueue Q){return ((Q.rear-Q.front+maxsize)%maxsize);}int main(){int i,j,q,a,n,x,z;SqQueue Q1;if(InitQueue_Sq(&Q1)==OK)printf("Init is ok!\n");q=1;printf("please enter a value for n.\n");scanf("%d",&n);EnQueue_Sq(&Q1,q);EnQueue_Sq(&Q1,q);for(z=1;z<=n-1;z++)printf("    ");printf("%d\n",q);for(z=1;z<=n-2;z++)printf("    ");printf("%d%8d\n",q,q);for(i=3;i<=n;i++){for(z=1;z<=n-i;z++)printf("    ");printf("%d",1);for(j=1;j<i-1;j++){DeQueue_Sq(&Q1,&q);GetFront(Q1,&a);x=q+a;printf("%8d",x);EnQueue_Sq(&Q1,x);}printf("%8d\n",1);q=1;EnQueue_Sq(&Q1,q);}system("pause");return 0;}


 

原创粉丝点击