1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 队列实现杨辉三角形(数据结构)(C语言)

队列实现杨辉三角形(数据结构)(C语言)

时间:2022-01-16 20:21:05

相关推荐

队列实现杨辉三角形(数据结构)(C语言)

利用队列的基本功能输出杨辉三角形:

实现方案:

#include "SequenceQueue.h"int main(){int N, num, i;Queue *que1 = NULL, *que2 = NULL, *tmp = NULL;if(QueueInit(&que1) != SUCCESS || QueueInit(&que2) != SUCCESS){printf("Init Error!\n");return 0;}printf("Please input:\n");scanf("%d", &N);for(i = 0; i < N; i++){if(0 == i){Push(que1, 0);Push(que1, 1);Push(que1, 0);num = 1;printf("%4d", num);}else{Push(que2, 0);while(1 != QueueLength(que1)){num = Pop(que1);num = num + Get(que1);Push(que2, num);printf("%4d ", num);}Push(que2, 0);tmp = que1;que1 = que2;que2 = tmp;QueueClear(que2);}printf("\n");}return 0;}

头文件:

#ifndef _SEQUENCEQUEUE_H#define _SEQUENCEQUEUE_H#include <stdio.h>#include <stdlib.h>#define SIZE 1024#define SUCCESS 10000#define FAILURE 10001#define TRUE 10002#define FALSE 10003typedef struct SequenceQueue{int data[SIZE];int front;int rear;}Queue;int QueueInit(Queue **queue);int QueueEmpty(Queue *queue);int Push(Queue *queue, int i);int Get(Queue *queue);int QueueLength(Queue *queue);int Pop(Queue *queue);int QueueClear(Queue *queue);int QueueDestory(Queue **queue);#endif

功能函数:

#include "SequenceQueue.h"int QueueInit(Queue **queue){if(queue == NULL){return FAILURE;}*queue = (Queue *)malloc(sizeof(Queue));if(*queue == NULL){return FAILURE;}(*queue)->front = 0;(*queue)->rear = 0;return SUCCESS;}int QueueEmpty(Queue *queue){if(queue == NULL){return FAILURE;}if(queue->rear == queue->front){return TRUE;}else{return FAILURE;}}int Push(Queue *queue, int i){if(queue == NULL){return FAILURE;}if((queue->rear+1)%SIZE == queue->front){return FAILURE;}queue->data[queue->rear] = i;queue->rear++;return SUCCESS;}int Get(Queue *queue){if(queue == NULL){return FAILURE;}return queue->data[queue->front];}int QueueLength(Queue *queue){if(queue == NULL){return FAILURE;}return (queue->rear-queue->front+SIZE)%SIZE;}int Pop(Queue *queue){if(queue == NULL){return FAILURE;}if(queue->front == queue->rear){return FAILURE;}int e = queue->data[queue->front];queue->front = (queue->front+1)%SIZE;return e;}int QueueClear(Queue *queue){if(queue == NULL){return FAILURE;}queue->front = queue->rear = 0;return SUCCESS;}int QueueDestory(Queue **queue){if(queue == NULL || *queue == NULL){return FAILURE;}free(*queue);return SUCCESS;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。