帮忙改两个队列操作的函数

enhancer 2007-01-07 11:22:36
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了,对结构体不熟悉
...全文
267 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dong 2007-01-09
  • 打赏
  • 举报
回复
enhancer(增强子) ( ) 信誉:100 Blog 2007-01-09 19:47:30 得分: 0


谢谢楼上
请问 cp = q[*hpt]; 就是把结构体的指针赋给cp吗?


------------------------------------------
cp = &q[*hpt];
Dong 2007-01-09
  • 打赏
  • 举报
回复
注意指针空间的分配问题
Dong 2007-01-09
  • 打赏
  • 举报
回复
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 2007-01-09
  • 打赏
  • 举报
回复
谢谢楼上
请问 cp = q[*hpt]; 就是把结构体的指针赋给cp吗?
creative55 2007-01-09
  • 打赏
  • 举报
回复
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;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧