c++中队列中的错误
Errors in a queue in C++
我不明白这段代码出了什么问题。我得到了几个
C2227: '->status'的左边必须指向类/结构/联合/泛型
C2065: 'head':未声明的标识符
和
C3861: 'main': identifier not found
我想访问位于队列头部的项目的状态,并在定义中给定的3个状态之间更改其值。但我做了一些错误的,而试图访问它,我不知道。下面是代码:
#define TOTALPACKETS 100
#define WINDOW 5
#define ACK 2
#define PENDING 1
#define NEW 0
typedef int Item ;
typedef struct node *link;
struct node{
Item data;
Item status;
link next;
};
int QUEUEempty(link head){
return head==NULL;
}
void QUEUEput(link *head, link *tail, Item data, Item status){
if (*head==NULL){
(*tail)=(link)malloc(sizeof(node));
(*tail)->data=data;
(*tail)->next=NULL;
(*tail)->status=NEW;
*head=*tail;
return;}
(*tail)->next=(link)malloc(sizeof(node));
*tail=(*tail)->next;
(*tail)->data=data;
(*tail)->next=NULL;
(*tail)->status=NEW;
return;
}
Item QUEUEget(link *head){
Item data=(*head)->data;
link t=*head;
*head=(*head)->next;
free(t);
return data;
}
void send(int sPacket){
(*head)->status=PENDING;//c2227,c2065
printf("Packet No. %d: %d",sPacket,*head->status);//c2227,c2065
}
void receive(){
if ((*head)->status==PENDING || (*head)->status=NEW) {//c2227,c2065
(*head)->status=ACK; //c2227,c2065
}
}
int main() {
int i,j,k,packets=0;
link head=NULL,tail=NULL;
for(i=0;i<TOTALPACKETS;i++){
QUEUEput(&head,&tail,i,NEW);
packets++;
}
while(!QUEUEempty(head)){
for (j=0;j<WINDOW;j++){
k=TOTALPACKETS-packets;
send(k);
receive();
if ((*head).status==ACK){
printf("Packet No. %d: %d",k,*head->status);
QUEUEget(&head);
}
}
}
return 0;
}
您未能通过head
进入send()
和receive()
。
对于您的main()
,请参见c++中main's签名的参数可以有unsigned和const限定符吗?
main有一个预定义的表单。你可以使用:
int main () /* or: int main(int argc, char* argv[]) */ {
也:
typedef int Item ;
struct node;
typedef node* link;
struct node{
Item data;
Item status;
link next;
};
...
link head=nullptr,tail=nullptr;
...
if (head->status==ACK){
printf("Packet No. %d: %d",k, head->status);
}
head
是指向node
的指针link
。此外,您忘记将head
传递给send
和receive
。
void send(int sPacket,link head ){
使用send(sPacket,head)
相关文章:
- boost::进程间消息队列引发错误
- 尝试将lambda函数放在队列中时出现一般分配器错误(可能是与unique_ptr有关的错误)
- 在C++中创建队列 - 什么是 malloc 错误?
- C++数组队列实现方法错误
- 使用MPI_Gather会导致无法附加到引导队列错误
- 使用 <list> (错误 C2760) 打印队列的元素
- 使用 std::forward_list 返回错误的队列实现
- 更改队列指针成员的值需要在 C++ 中出现奇怪的错误
- 获取错误:之前在此处声明的布尔队列的编辑<T>
- C++:自定义数据类型向量错误的队列
- 为什么STL优先级队列错误地分配了我的类对象
- 前缀表示法 C++,分段错误(堆栈和队列)
- 线程安全队列出现分段错误
- 队列验证层错误:队列族索引在 pCreateInfo->pQueueCreateInfos 数组中不是唯一的
- 交换优先级队列时尝试引用已删除的函数错误
- 为什么我的简单C++程序使用队列和 fstream 错误到无效指针
- 尝试编译队列时static_initialization_and_destruction错误
- 队列类的取消排队方法"Aborted (core dumped)"错误
- 在.c文件接收函数中使用Linux中的MSGGET创建消息队列未实现错误
- 尝试使用堆栈创建队列.为什么我会遇到int转换错误的空白