C 언어 데이터 구 조 는 순환 대기 열 을 이용 하여 양 휘 삼각형 을 출력 한다.

/ * 순환 링크 를 이용 하여 양 휘 삼각 알고리즘 논리 인쇄 * 첫 번 째 단 계 는 첫 번 째 줄 의 1 출력 * 두 번 째 줄 의 1 을 입단 작업 * 두 번 째 줄 부터 다음 줄 의 첫 번 째 요 소 를 1 입 대 * 두 번 째 순환 에 들 어가 서 두 번 째 줄 의 첫 번 째 요 소 를 팀 에서 내 고 두 번 째 요소 의 값 * 을 얻 은 다음 에 팀 의 값 을 출력 * a1 과 a2 의 값 을 계산 합 니 다.후 입 대 * 2 층 순환 종료 1 층 진입 후기 순환 * i 줄 의 마지막 요 소 를 정렬 하여 출력 * 마지막 으로 i + 1 줄 의 마지막 요 소 를 1 입 대 * 주로 순환 대기 열의 선진 적 인 선 출 규칙 을 이용 합 니 다 * /
#include
#include
#define MAXSIZE 1024
typedef  int element;
typedef struct seqqueue
{
    element data[MAXSIZE];
      int front;
      int rear;
}Seq_Queue;
Seq_Queue*init_seqqueue();//        
void fun(int n);//    
void enter_seqqueue(Seq_Queue*Q,element x);//        
void delet_seqqueue(Seq_Queue*Q,int *x);//       
void getdata_seqqueue(Seq_Queue*Q,int *x);//     
void main()
{
    int n;
    printf("          :
"); scanf("%d",&n); printf(" :
"); fun(n); } Seq_Queue*init_seqqueue()// { Seq_Queue*q; q=(Seq_Queue*)malloc(sizeof(Seq_Queue)); if(q==NULL) return NULL; else { q->front=0; q->rear=0; } return q; } void enter_seqqueue(Seq_Queue*Q,element x)// { Q->data[Q->rear]=x; Q->rear=(Q->rear+1)%MAXSIZE; } void delet_seqqueue(Seq_Queue*Q,int *x)// { *x=Q->data[Q->front]; Q->front=(Q->front+1)%MAXSIZE; } void getdata_seqqueue(Seq_Queue*Q,int *x)// { *x=Q->data[Q->front]; } void fun(int n)// { int i,k; Seq_Queue*q; q=init_seqqueue(); int a1,a2; printf("%d
",1); enter_seqqueue(q,1); enter_seqqueue(q,1); for(i=2;i<=n;i++) { enter_seqqueue(q,1);// i+1 for(k=0;k<=i-2;k++) { delet_seqqueue(q,&a1);// getdata_seqqueue(q,&a2);// printf("%d ",a1); enter_seqqueue(q,a1+a2); // i+1 } delet_seqqueue(q,&a2);// i printf("%d
",a2);// i enter_seqqueue(q,1);// i+1 } }

좋은 웹페이지 즐겨찾기