读书人

帮忙改两个队列操作的函数,该怎么解决

发布时间: 2012-02-26 20:19:45 作者: rapoo

帮忙改两个队列操作的函数
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];

读书人网 >C++

热点推荐