?? 習(xí)題4-打印揚(yáng)輝三角系數(shù).c
字號:
#include "datastru.h"
#include <stdio.h>
#include <malloc.h>
DATATYPE1 dellinkqueue(LINKQUEUE *q)
{/*刪除隊(duì)頭元素并返回*/
LINKQLIST *p;
DATATYPE1 v;
if(q->front == q->rear)
{ printf("隊(duì)列空\n");
v = 0;}
else
{ p = (q->front)->next;
(q->front)->next = p->next;
if(p->next == NULL)
q->rear = q->front;
v = p->data;
free(p);}
return v;
}
DATATYPE1 getlinkqueue(LINKQUEUE *q)
{/*返回隊(duì)頭元素*/
DATATYPE1 v;
if(q->front == q->rear)
{printf("隊(duì)列空\n"); v = 0;}
else v = (q->front)->next->data;
return v;
}
void enlinkqueue(LINKQUEUE *q, DATATYPE1 x)
{/*元素x 入隊(duì)列*/
(q->rear)->next = (LINKQLIST *)malloc(sizeof(LINKQLIST));
q->rear = (q->rear)->next;
(q->rear)->data = x;
(q->rear)->next = NULL;
}
void initlinkqueue(LINKQUEUE *q)
{/*鏈隊(duì)列初始化*/
q->front = (LINKQLIST *)malloc(sizeof(LINKQLIST));
(q->front)->next = NULL;
q->rear = q->front;
}
void main(){
LINKQUEUE lq, *q;
int n, s, t, k, i, m, j;
printf("打印揚(yáng)輝三角形,輸入行數(shù) : ");
scanf("%d",&n);
q = &lq;
initlinkqueue(q); /*鏈隊(duì)列初始化*/
enlinkqueue(q, 1); /*預(yù)先放入第一行的兩個系數(shù)1*/
enlinkqueue(q, 1);
s = 0; /*計(jì)算下一行系數(shù)時(shí)用到的工作單元*/
for(i = 1; i <= n; i++) { /*逐行處理*/
printf("\n"); /*換行*/
for(m = i; m <= n; m++) printf(" ");
enlinkqueue(q, 0); /*各行之間插入一個0*/
for(j = 1; j <= i + 2; j++) { /*處理第i行的i+2個系數(shù)(包括一個0)*/
t = getlinkqueue(q); /*取隊(duì)頭元素*/
k = dellinkqueue(q); /*刪除隊(duì)頭元素*/
enlinkqueue(q, s+t); /*計(jì)算下一行的系數(shù),入隊(duì)列*/
s = t;
if(j != (i+2)) printf("%d ",s); /*打印一個系數(shù),第i+2個是0,不顯示*/
}
printf("\n");
}
printf("\n\n");
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -