C fifo链表char推

时间:2016-01-05 21:26:21

标签: c linked-list fifo

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

Rendered windows/_comment.html.erb (0.0ms) Rendered comments/create.js.erb (1.8ms) 结构中,值的类型为Node,但您要为其分配char。这就是为什么你得到警告,以及为什么印刷品不合适的原因。