1. 程式人生 > >佇列實現楊輝三角形(資料結構)(C語言)

佇列實現楊輝三角形(資料結構)(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   10003

typedef 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;
}

相關推薦

佇列實現三角形資料結構C語言

利用佇列的基本功能輸出楊輝三角形: 實現方案: #include "SequenceQueue.h" int main() { int N, num, i; Queue *que1 = NULL, *que2 = NULL, *tmp = NULL; if(Qu

迪傑斯特拉演算法可列印最短路徑資料結構題集C語言版7.11

轉自 https://blog.csdn.net/cxllyg/article/details/7604812   #include <iostream> #include <iomanip> #include <string> usi

資料結構之用佇列實現三角

/************************************************************** > File Name: PascalTriangle.c > Author: chengfeiyan > Mail:

棧與佇列-順序棧與鏈棧類模板的實現資料結構基礎 第3周

這是用C++編寫的棧的類模板的實現,包括順序棧和鏈棧,並進行了簡單的測試。 程式碼中srrStack類和lnkStack類均繼承於Stack類, Stack類可以看成是棧的邏輯結構(ADT抽象資料型別,Abstract Data Type)。注意這裡實現是棧與

Java實現三角形

[] png 技術 prev pan alt 楊輝三角 es2017 new Java實現楊輝三角形 一、源代碼:YFTriangle.java 1 package cn.com.zfc.day009; 2 3 import java.util.Scanner;

c語言實現三角形

== c語言 main AI 輸出結果 OS printf 結果 i++ #include <stdio.h> int main(void) { int a[9][9]={}; int i,j; for(i=0;i<9;i++){ for(j

線性表及其應用C語言實現資料結構複習最全筆記

一、順序表的表示與實現 1.線性表的順序結構定義 #define LIST_INIT_SIZE 100 //線性表儲存空間的初始分配量 #define LISTINCREMENT 10 //線性表儲存空間的分配增量 typedef struct { ElemType* el

雜湊Hash資料結構,使用C語言實現s。傻瓜也能

雜湊資料結構是一種非常簡單,實用的資料結構。原理是將資料通過一定的hash函式規則,然後儲存起來。使查詢的時間複雜度近似於O(1)。進而大大節省了程式的執行時間。 雜湊表的原理如圖 原來的資料可以直接通過雜湊函式儲存起來,這樣在搜尋的時候,等於每一個數據都有了自己的特定查詢號碼,

排序及其應用C語言實現資料結構複習最全筆記(期末複習最新版)

排序 關於排序給兩篇不錯的部落格參考: http://www.cnblogs.com/eniac12/p/5329396.html https://www.cnblogs.com/eniac12/p/5332117.html 知識前提 關於內外排序 內排序:指在排序

查詢及其應用C語言實現資料結構複習最全筆記

所謂查詢(Search)又稱檢索,就是在一個數據元素集合中尋找滿足某種條件的資料元素。查詢在計算機資料處理中是經常使用的操作。查詢演算法的效率高低直接關係到應用系統的效能。查詢的方法很多,本章將介紹一些常用的查詢演算法,主要有:線性表的查詢、樹表的查詢和散列表的查詢,並對有關的演算法進行效能分析

圖及其應用c語言實現資料結構複習最全筆記期末複習最新版

圖 一.圖的基本概念 1.圖的定義 圖是由頂點(vertex)集合及頂點間的關係組成的一種資料結構。Graph=(V,E)Graph=(V,E)其中,頂點集合 V={x|x∈某個物件資料集}V={x|x∈某個物件資料集} 是有窮非空集合;E={(x,y)|x,y∈V}E={(x,y

樹及其應用c語言實現資料結構複習最全筆記

樹 一.樹的基本概念     二.二叉樹 1.二叉樹的定義 2.二叉樹的性質  此外在這裡在介紹下完美二叉樹的概念及重要性質  完全二叉樹是效率很高的資料結構,完全二叉樹是由滿二叉樹而引出來的。對於深度為K的,有n個結點的二叉樹,當

資料結構排序的實驗四快速,冒泡,簡單選擇,直接插入排序的c語言實現!!

<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18p

利用迴圈佇列實現三角的列印

#define MAXSIZE 100 #include <iostream> using namespace std; typedef int SElemType; typedef struct { SElemType *base; int front;

利用鏈式佇列輸出三角形和演算法輸出三角形

鏈式佇列 標頭檔案 #ifndef _SEQUENCEQUEUE_H #define _SEQUENCEQUEUE_H #include <stdio.h> #include <stdlib.h> #define SIZE 1000

二叉樹基礎-二叉樹類模板的實現資料結構基礎 第5周

這裡參考了課本配套的程式簡單實現了二叉樹類模板,主要包含了二叉樹的建立和各種遍歷方法。 對於二叉樹的建立,這裡使用的是前序遍歷的方法建立的二叉樹,具體如下: 這裡我使用的下圖中的二叉樹作為測試案例: 具體不說了,詳見程式碼吧。 原始碼 //t

shell腳本實現三角形

pre dfa please oss elements 更改 one 留言 proc 根據楊輝三角形的每行元素第一位與最後一位都是1,且每個數等於它上方兩數之和,且每行元素數等於行數。利用這些規律,我們很簡單的就可以把楊輝三角形實現出來了!我的想法是用二個數組,循環相互根據

資料結構資料結構與演算法基本含義

1.1 基礎概念 ● 資料元素       ● 是組成資料的,有一定意義的單位       ● 在計算機中通常作為整體處理       ● 也叫做結點或記

構建二叉樹資料結構,李春葆

#include <stdio.h> #include <malloc.h> #include <stdlib.h> typedef struct node { char data; struct node* lchild; struct node* rch

資料結構演算法之C語言實現

單鏈表演算法大全(包含所有常見操作):單鏈表演算法連結 二叉樹演算法大全(包含所有常見操作):二叉樹演算法連結 矩陣無向圖演算法(生成、BFS、DFS):矩陣無向圖演算法連結 鄰接表無向圖