C fifo链表字符推送

C fifo linked list char push

我目前正在尝试理解 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”。 我真的很困惑。

数据定义为 char,但您为其分配了 char *char 指针)。这会产生警告,并且肯定不会像您预期的那样工作。

在您的 Node 结构中,该值的类型为 char,但您将 char* 分配给它。这就是您收到警告以及打印内容不正确的原因。