帮忙改两个队列操作的函数
typedef int NODE;
int en_c_queue(NODE q[],int maxn,int * tpt,int * hpt,NODE x){
if((*tpt+1)%maxn == *hpt) return 1;
q[*tpt+1] = x;
*tpt = (*tpt+1)%maxn;
return 0;
}
int de_c_queue(NODE q[],int maxn,int * tpt,int * hpt,NODE * cp){
if(*tpt == *hpt) return 1;
cp = q[*hpt];
*hpt = (*hpt+1)%maxn;
return 0;
}
现在要把 typedef int NODE; 改成
typedef struct dnode
{
int key;
int value;
} NODE;
那两个函数该怎么改?
很久没搞c了,对结构体不熟悉
[解决办法]
typedef struct dnode
{
int key;
int value;
} NODE;
int en_c_queue(NODE q[],int maxn,int * tpt,int * hpt,NODE x){
if((*tpt+1)%maxn == *hpt) return 1;
q[*tpt+1] = x.key;
*tpt = (*tpt+1)%maxn;
return 0;
}
int de_c_queue(NODE q[],int maxn,int * tpt,int * hpt,NODE * cp){
if(*tpt == *hpt) return 1;
cp = q[*hpt];
*hpt = (*hpt+1)%maxn;
return 0;
}
[解决办法]
typedef struct dnode
{
int key;
int value;
}NODE;
int en_c_queue(NODE q[],int maxn,int * tpt,int * hpt,NODE x)
{
if((*tpt+1)%maxn == *hpt) return 1;
q[*tpt+1].key = x.key;
q[*tpt+1].value = x.value;
*tpt = (*tpt+1)%maxn;
return 0;
}
int de_c_queue(NODE q[],int maxn,int * tpt,int * hpt,NODE * cp)
{
if(*tpt == *hpt) return 1;
cp-> key = q[*hpt].key;
cp-> value = q[*hpt].value;
*hpt = (*hpt+1)%maxn;
return 0;
}
[解决办法]
注意指针空间的分配问题
[解决办法]
enhancer(增强子) ( ) 信誉:100 Blog 2007-01-09 19:47:30 得分: 0
谢谢楼上
请问 cp = q[*hpt]; 就是把结构体的指针赋给cp吗?
------------------------------------------
cp = &q[*hpt];