⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 习题4-打印扬辉三角系数.c

📁 数据结构各章实验源代码; 数据结构实验源代码
💻 C
字号:
#include  "datastru.h"
#include  <stdio.h>
#include  <malloc.h>

DATATYPE1 dellinkqueue(LINKQUEUE *q)
{/*删除队头元素并返回*/
	LINKQLIST *p;
	DATATYPE1 v;

	if(q->front == q->rear)
	   {	printf("队列空\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)
{/*返回队头元素*/
	DATATYPE1 v;

	if(q->front == q->rear)
	   {printf("队列空\n");	v = 0;}
	else  v = (q->front)->next->data;
	return v;
}

void enlinkqueue(LINKQUEUE *q, DATATYPE1 x)
{/*元素x 入队列*/
	(q->rear)->next = (LINKQLIST *)malloc(sizeof(LINKQLIST));
	q->rear = (q->rear)->next;
	(q->rear)->data = x;
	(q->rear)->next = NULL;
}

void initlinkqueue(LINKQUEUE *q)
{/*链队列初始化*/
	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("打印扬辉三角形,输入行数 : ");
	scanf("%d",&n);
	q = &lq;
	initlinkqueue(q);           /*链队列初始化*/
	enlinkqueue(q, 1);          /*预先放入第一行的两个系数1*/
	enlinkqueue(q, 1);
	s = 0;                      /*计算下一行系数时用到的工作单元*/
	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个系数(包括一个0)*/
			t = getlinkqueue(q);     /*取队头元素*/
			k = dellinkqueue(q);     /*删除队头元素*/
			enlinkqueue(q, s+t);     /*计算下一行的系数,入队列*/
			s = t;
			if(j != (i+2)) printf("%d   ",s);  /*打印一个系数,第i+2个是0,不显示*/
			}
		printf("\n");
	}
	printf("\n\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -