2016-01-05 2 views
1

В настоящее время я пытаюсь понять ФИФО связанный список и нашел пример здесь Example, и я пытаюсь ввести символ вместо intC ФИФО связанный список голец толчок

#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"); 
       } 
      } 
    } 
} 

Я не могу понять это предупреждение on line 26: warning: присваивание делает целое число от указателя без литья

Я могу ввести текст, например: «Hello world», но когда я хочу его отобразить, он отображается как «-9». Я действительно смущен.

+0

Не размещайте ссылку на ваш код. Вставьте его прямо в свой вопрос, а затем выделите его и нажмите 'cntrl + k' – JackVanier

+0

. Предупреждение означает, что он говорит: указатель зацикливается на целочисленный или числовой тип (* eg *,' char') по какой-либо причине, не будучи явно накладывается литой. Вам нужно посмотреть код на этой строке (я не смотрел внимательно на него - код, на который вы ссылаетесь, не имеет номеров строк, и мне не хотелось их подсчитывать) и определить, сделано это намеренно или ошибочно , – lurker

ответ

3

Данные определяются как char, но присваивается указатель char *(). Это создает предупреждение и, безусловно, не будет работать так, как вы ожидаете.

+0

Спасибо за это! За что никогда не замечал этого !! – mypoint

0

В вашей структуре Node значение имеет тип char, но вместо этого вы назначаете ему char*. Вот почему вы получаете предупреждение, и почему печать ничего не получается.

Смежные вопросы