1. 程式人生 > 其它 >【伺服器】建立docker、執行jupyter相關命令

【伺服器】建立docker、執行jupyter相關命令

參照教學章節中的視訊講解,及教材中佇列的演算法,使用之編寫程式,打印出楊輝三角。
COMMON.C
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

SEQ.H
#define QueueElementType int //佇列中元素為整數型別
#define MAXSIZE 50 //佇列最大長度

//迴圈佇列型別定義
typedef struct
{
QueueElementType element[MAXSIZE]; //佇列元素存入陣列

int front; //頭指示器
int rear; //尾指示器
}SeqQueue;

//迴圈佇列初始化
void InitQueue(SeqQueue *Q);
//迴圈佇列入隊
int EneterQueue(SeqQueue *Q,QueueElementType *x);
//迴圈隊列出隊
int DeleteQueue(SeqQueue *Q,QueueElementType *x);
//獲取隊首元素
int GetHead(SeqQueue *Q,QueueElementType *x);

SEQ.C
#include “common.h”
#include “seq.h”

//迴圈佇列初始化
void InitQueue(SeqQueue *Q)

{
Q->front=Q->rear=0; //將佇列初始化為空佇列
}

//迴圈佇列入隊
int EnterQueue(SeqQueue *Q,QueueElementType x)
{
if((Q->rear+1)%MAXSIZE==Q->front) //頭指標+1與隊尾相同,表示隊滿了
return FALSE;
Q->element[Q->rear]=x; //x放入隊尾
Q->rear=(Q->rear+1)%MAXSIZE; //設定隊尾指示器位置+1,如果超出最大位置則要從陣列0位置開始
return TRUE;
}

//迴圈隊列出隊
int DeleteQueue(SeqQueue *Q,QueueElementType *x)

{
if(Q->front==Q->rear) //佇列為空
return FALSE;
*x=Q->element[Q->front]; //出隊元素值存入x
Q->front=(Q->front+1)%MAXSIZE; //重新設定隊首指標
return TRUE;
}

int GetHead(SeqQueue *Q,QueueElementType *x)
{
if(Q->front==Q->rear)
return FALSE;
*x=Q->element[Q->front];
return TRUE;
}

MAIN.C
#include “seq.h”
#define N 7 //假設列印7層三角

//使用迴圈佇列演算法,實現楊輝三角輸出
int main()
{
int i,n,j; //迴圈控制變數
int x,temp; //存放元素值

SeqQueue Q;   //宣告一個迴圈佇列 
InitQueue(&Q);  //佇列初始化 
EnterQueue(&Q,1);  //第一行元素1進棧 
for(n=2;n<=N;n++)
{
	for(j=N-n+2;j>=1;j--)  //格式控制,每行前輸出空白 
	printf(" ");
	
	EnterQueue(&Q,1);    //每層開始為1,入隊尾 
	for(i=1;i<=n-2;i++)  //利用(n-1)上一層的元素,產生下一層中間n-2個元素 
	{
		DeleteQueue(&Q,&temp);  //上一層隊首元素出隊 
		printf("%3d",temp);     //列印上一行元素值 
		GetHead(&Q,&x);         //獲取上一行目前元素的值 
		temp=temp+x;            //計算出下一行的值 
		EnterQueue(&Q,temp);    //將新值存入隊尾 
	}
	DeleteQueue(&Q,&x);         //上一行最後一個元素出隊 
	printf("%3d\n",x);
	EnterQueue(&Q,1);           //每層最後一個為1,入隊 
}
//打印出最後一行 
while(Q.front!=Q.rear)          //當隊不為空時 
{
	DeleteQueue(&Q,&x);
	printf("%3d",x);
}
return 0;

}