【伺服器】建立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 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;
}