欢迎大家来到IT世界,在知识的湖畔探索吧!
题目要求:
规定这样一种形状的三角形,如图7-36所示为一个符号三角形:
#include "stdio.h"typedef struct QNode{ /*定义队列结点类*/ char data; struct QNode *next;} QNode , *QueuePtr;typedef struct{ /*定义一个链队列*/ QueuePtr front; /*队头指针*/ QueuePtr rear; /*队尾指针*/}LinkQueue;initQueue(LinkQueue *q){ /*初始化一个空队列*/ q->front = q->rear = (QueuePtr)malloc(sizeof(QNode)); /*创建一个头结点,队头队尾指针指向该结点*/ if( !q->front) exit(0); /*创建头结点失败*/ q->front->next = NULL; /*头结点指针域置NULL*/}EnQueue(LinkQueue *q, char e){ /*入队列操作*/ QueuePtr p; p = (QueuePtr)malloc(sizeof(QNode)); /*创建一个队列元素结点*/ if( !q->front) exit(0); /*创建头结点失败*/ p->data = e; /*将元素e入队列*/ p->next = NULL; /*修改队尾指针*/ q->rear ->next = p; q->rear = p;}DeQueue(LinkQueue *q, char *e){ /*如果队列q不为空,删除q的队头元素,用e返回其值*/ QueuePtr p; if(q->front == q->rear) return; /*队列为空,返回*/ p = q->front->next; *e = p->data; q->front->next = p->next; if(q->rear == p) q->rear = q->front;/*如果队头就是队尾,则修改队尾指针*/ free(p);}printTriangle(int n){ LinkQueue q; char e,a,b ; int i,j;initQueue(&q); /*初始化队列*/printf("Input the the charecter(+/-) of the row.1\n"); for(i=0;i<n;i++){ /*输入第一行的符号,并入队列*/ scanf("%c",&e); EnQueue(&q,e); }printf("The charecter triangle is like\n"); for(i=0;i<n;i++){ /*控制符号三角形的行数*/ for(j=0;j<i;j++) printf(" "); /*控制输出格式,打印成倒三角形状*/ DeQueue(&q,&a); /*出队列,打印每行的第一个符号*/ printf("%c ",a); for(j=0;j<n-i-1;j++) /*控制输出每一行,第i行输出n-i个符号*/ { DeQueue(&q,&b); /*出队列*/ printf("%c ",b); if(a == b) EnQueue(&q,'+'); /*向队尾插入新元素*/ else EnQueue(&q,'-'); a = b; } printf("\n"); /*控制输出格式,打印成倒三角形状*/ }}main(){ int n; printf("Please input the number of '+' or '-' of the row.1 \n"); scanf("%d",&n); /*输入符号三角形中第一行的元素个数*/ getchar(); printTriangle(n); /*打印符号三角形*/ getche();}
欢迎大家来到IT世界,在知识的湖畔探索吧!
运行结果:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/49245.html