我目前正在尝试了解fifo链接列表,并在Example找到示例,我正在尝试输入char而不是int
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
struct Node
{
char Data;
struct Node* next;
}*rear, *front;
void delQueue()
{
struct Node *temp, *var=rear;
if(var==rear)
{
rear = rear->next;
free(var);
}
else
printf("\nQueue Empty");
}
void push(char *value)
{
struct Node *temp;
temp=(struct Node *)malloc(sizeof(struct Node));
temp->Data=value;
if (front == NULL)
{
front=temp;
front->next=NULL;
rear=front;
}
else
{
front->next=temp;
front=temp;
front->next=NULL;
}
}
void display()
{
struct Node *var=rear;
if(var!=NULL)
{
printf("\nElements are as: ");
while(var!=NULL)
{
printf("\t%d",var->Data);
var=var->next;
}
printf("\n");
}
else
printf("\nQueue is Empty");
}
int main()
{
int i=0;
char ch;
front=NULL;
printf(" \n1. Push to Queue");
printf(" \n2. Pop from Queue");
printf(" \n3. Display Data of Queue");
printf(" \n4. Exit\n");
while(1)
{
printf(" \nChoose Option: ");
//scanf("%d",&i);
ch = getchar();
switch(ch)
{
case '+':
{
char value[20];
printf("\nEnter a valueber to push into Queue : ");
scanf("%s", value);
push(value);
printf("%s",value);
display();
break;
}
case '-':
{
delQueue();
display();
break;
}
case '*':
{
display();
break;
}
case '$':
{
exit(0);
}
default:
{
printf("\nwrong choice for operation");
}
}
}
}
我在第26行无法理解这个警告:警告:赋值从没有强制转换的指针生成整数
我可以输入文字,例如:“Hello world”,但是当我想显示它时,它显示为“-9”。 我真的很困惑。
答案 0 :(得分:3)
数据定义为char
,但您为其分配了char *
(char
指针)。这就产生了警告,并且肯定不会像你期望的那样工作。
答案 1 :(得分:0)
在Rendered windows/_comment.html.erb (0.0ms)
Rendered comments/create.js.erb (1.8ms)
结构中,值的类型为Node
,但您要为其分配char
。这就是为什么你得到警告,以及为什么印刷品不合适的原因。