level 1
骏马啸天驰
楼主
#include <stdio.h>
#define null 0;
typedef struct lnode{
int data;
struct lnode *next;
}*linklist,lnode;
typedef linklist queueptr;
typedef struct{
queueptr front;
queueptr rear;
}sqqueue;
void initqueue(sqqueue &q)
{
q.front=q.rear=new lnode;
q.front->next=null;
}
void enqueue(sqqueue &q,int e)
{
linklist p;
p=new lnode;
p->data=e;
p->next=null;
q.rear->next=p;
q.rear=p;
}
bool dequeue(sqqueue &q,int e)
{
linklist p;
p=new lnode;
if(q.front==q.rear)return false;
p=q.front->next;
e=p->data;
q.front->next=p->next;
if(q.rear==p)q.rear=q.front;
delete p;
return true;
}
bool gethead(sqqueue &q,int e)
{
if(q.front==q.rear)return false;
else return true;
e=q.front->next->data;
}
bool queueempty(sqqueue &q)
{
if(q.front=q.rear)return false;
else return true;
}
void yanghui(int n)
{
int i,k,s,e;
s=0;e=0;
sqqueue q;
for(i=0;i<=n;i++)
printf(" ");
printf("\n");
initqueue(q);
enqueue(q,0);
enqueue(q,1);
enqueue(q,1);
k=1;
while(k<n)
{
for(i=1;i<=n-k;i++)
printf(" ");
enqueue(q,0);
do{
dequeue(q,s);
gethead(q,e);
if(e)printf("%d ",e);
else printf("\n");
enqueue(q,s+e);
}while(e!=0);
k++;
}
dequeue(q,e);
while(!queueempty(q))
{
dequeue(q,e);
printf("%d ",e);
}
}
void main()
{
int n;
scanf("%d",&n);
yanghui(n);
}
2013年12月10日 02点12分
1
#define null 0;
typedef struct lnode{
int data;
struct lnode *next;
}*linklist,lnode;
typedef linklist queueptr;
typedef struct{
queueptr front;
queueptr rear;
}sqqueue;
void initqueue(sqqueue &q)
{
q.front=q.rear=new lnode;
q.front->next=null;
}
void enqueue(sqqueue &q,int e)
{
linklist p;
p=new lnode;
p->data=e;
p->next=null;
q.rear->next=p;
q.rear=p;
}
bool dequeue(sqqueue &q,int e)
{
linklist p;
p=new lnode;
if(q.front==q.rear)return false;
p=q.front->next;
e=p->data;
q.front->next=p->next;
if(q.rear==p)q.rear=q.front;
delete p;
return true;
}
bool gethead(sqqueue &q,int e)
{
if(q.front==q.rear)return false;
else return true;
e=q.front->next->data;
}
bool queueempty(sqqueue &q)
{
if(q.front=q.rear)return false;
else return true;
}
void yanghui(int n)
{
int i,k,s,e;
s=0;e=0;
sqqueue q;
for(i=0;i<=n;i++)
printf(" ");
printf("\n");
initqueue(q);
enqueue(q,0);
enqueue(q,1);
enqueue(q,1);
k=1;
while(k<n)
{
for(i=1;i<=n-k;i++)
printf(" ");
enqueue(q,0);
do{
dequeue(q,s);
gethead(q,e);
if(e)printf("%d ",e);
else printf("\n");
enqueue(q,s+e);
}while(e!=0);
k++;
}
dequeue(q,e);
while(!queueempty(q))
{
dequeue(q,e);
printf("%d ",e);
}
}
void main()
{
int n;
scanf("%d",&n);
yanghui(n);
}