码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构上机4队列-杨辉三角2

时间:2015-12-17 00:20:07      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

#include <stdio.h>
#include <malloc.h>
#define OK 1
#define OVERFLOW -1
#define ERROR 0

typedef int Status, QElemType;
//队列结构定义
typedef struct {
  QElemType *base;
  int front;
  int rear;
} SqQueue;
//初始化队列
Status InitQueue(SqQueue *Q, int Qsize) {
  Q->base = (QElemType *)malloc(Qsize * sizeof(QElemType));
  if (!Q->base)
    return OVERFLOW;
  Q->front = Q->rear = 0;
  return OK;
}
//入队
Status EnQueue(SqQueue *Q, int Qsize, QElemType e) {
  if ((Q->rear + 1) % Qsize == Q->front)
    return ERROR;
  Q->base[Q->rear] = e;
  Q->rear = (Q->rear + 1) % Qsize;
  return OK;
}
//取队长
int getlength(SqQueue *Q, int Qsize) {
  return (Q->rear - Q->front + Qsize) % Qsize;
}
//出队
Status DeQueue(SqQueue *Q, int Qsize) {
  if (Q->front == Q->rear)
    return ERROR;
  Q->front = (Q->front + 1) % Qsize;
  return OK;
}
//显示两个0之间的数字
Status print(SqQueue *Q, int Qsize) {
  //     0 1 0
  //   0 1   1 0
  // 0 1   2   1 0
// 0 1   3   3   1 0
  int i;

  if (Q->rear == Q->front)
    return ERROR;
  printf("%*c", 3 * (Qsize - getlength(Q, Qsize)),  );
  i = (Q->front + 1) % Qsize;
  while ((1 + i) % Qsize != Q->rear) {
    printf(" %*d", (i + Qsize) / Qsize > 1 ? -5 : 5, Q->base[i]);
    i = (1 + i) % Qsize;
  }
  printf("\n");
  return OK;
}
//杨辉三角
void yanghuisanjiao(SqQueue *Q, int n) {
  int Qsize;
  int i;

  printf("%d行的杨辉三角\n", n);
  Qsize = n + 3;
  InitQueue(Q, Qsize);
  EnQueue(Q, Qsize, 0);
  EnQueue(Q, Qsize, 1);
  for ( i = 1; i <= n; i++ ) { 
    while ( getlength(Q, Qsize) > 2 ) {
      EnQueue(Q, Qsize,
              Q->base[Q->front] + Q->base[(Q->front + 1) % Qsize]);
      DeQueue(Q, Qsize);
      if (Q->base[Q->front] == 0)
        break;
    }
    EnQueue(Q, Qsize, 0);
    print(Q, Qsize);
  }
}
//主函数
int main(void) {
    int n;
    SqQueue Q;

    puts("循环队列实现杨辉三角的计算:");
    puts("请输入有多少行? (为了观察建议20以内)");
    scanf("%d", &n);
    yanghuisanjiao(&Q, n);
    return 0;
}

 

数据结构上机4队列-杨辉三角2

标签:

原文地址:http://www.cnblogs.com/startnow/p/5052603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!