|
|
#2
jj3692582011-11-19 19:47
这是我的代码,当然也是高手指教的,嘿嘿
#include<stdio.h> #include<stdlib.h> #define Maxsize 1000 typedef struct { int element[Maxsize]; int front; int rear; }Queue; void InitQueue(Queue *Q) { Q->front=Q->rear=0; } int EnterQueue(Queue *Q,int x) { if((Q->rear+1)%Maxsize==Q->front) return 0; Q->element[Q->rear]=x; Q->rear=(Q->rear+1)%Maxsize; return 1; } int DeQueue(Queue *Q,int *x) { if(Q->front==Q->rear) return 0; *x=Q->element[Q->front]; Q->front=(Q->front+1)%Maxsize; return 1; } int GetHead(Queue Q,int *x) { if(Q.front==Q.rear) return 0; *x=Q.element[Q.front]; return 1; } int main()//yanghuisanjiao { int i,j,n,temp,e; int k,h;//表示有k个测试用例 scanf("%d",&k); for(h=0;h<k;h++) { Queue Q; InitQueue(&Q); scanf("%d",&n); printf("1\n"); EnterQueue( &Q, 1 ); EnterQueue( &Q, 1 ); for(i=2;i<n+1;i++) { EnterQueue(&Q,1);//第n行的第一个元素入队 for(j=1;j<=i-1;j++) { DeQueue(&Q,&temp); printf("%d ",temp); GetHead(Q,&e); temp=temp+e;//利用第n-1行的元素产生第n行的元素 EnterQueue(&Q,temp); } DeQueue(&Q,&e); printf("%d ",e);//打印第n-1行的最后一个元素 EnterQueue(&Q,1);//最后一个元素入队 printf("\n"); } } return 0; } |
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct QNode{
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr rear;
QueuePtr front;
}LinkQueue;
void InitQueue(LinkQueue &Q){
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
Q.front=NULL;
}
void EnQueue(LinkQueue &Q,int e){
QNode *p;
p=(QueuePtr)malloc(sizeof(QNode));
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
void DEQueue(LinkQueue &Q,int &e){
QNode *p;
p=Q.front->next;
e=p->data;
Q.front->next=p->next;
free(p);
}
int GetFront(LinkQueue &Q){
return Q.front->next->data;
}
main(){
int w,p,sum;
LinkQueue Q;
InitQueue(Q);
EnQueue(Q,1);
EnQueue(Q,1);
for(int i=2;i<=5;i++){
EnQueue(Q,1);
for(int j=0;j<=i-2;j++){
DEQueue(Q,p);
printf("%d",p);
w=GetFront(Q);
sum=p+w;
EnQueue(Q,sum);
}
EnQueue(Q,1);
printf("\n");
}
}