題目要求:
規定這樣一種形狀的三角形,如圖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();
}
運行結果:
運行結果
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!