Печать значения ссылки в связанном списке - PullRequest
0 голосов
/ 02 августа 2011

Я написал программу со связанным списком на C. Но мой код для печати связанного списка показывает ошибку.Я не могу понять, что происходит не так.Может кто-нибудь помочь мне выяснить, что пошло не так в моем коде

#include<stdio.h>
#include<stdlib.h>
struct node{
  int link_data;
  struct node *next;
};
void add_node(struct node *,int);
int delete_node(struct node *);
struct node *front = NULL,*rear = NULL;
int main(){
  struct node *l = (struct node *)malloc(sizeof(struct node *));
  struct node *inc = (struct node *)malloc(sizeof(struct node *));
  int number,i,option,del_node;
  while(1){
    printf("Enter the option:\n1. Add node\n2. Delete node\n");
    scanf("%d",&option);
    switch(option){
      case 1:
        printf("Enter the number to be add\n");
        scanf("%d",&number);
        add_node(l,number);
        break;
      case 2:
        del_node = delete_node(l);
        printf("%d has been removed\n",del_node);
        break;
      case 3:
        for(inc = front ; inc < rear ; inc = inc->next){
          print("%d",inc->link_data);   <<<<<<<<<<<<<<<<< Error part of the program
        }
        break;
      case 4: 
        exit(0);
        break;
    }
  }
}
void add_node(struct node *l,int number){
  struct node *newnode = (struct node *)malloc(sizeof(struct node *));
  if(front == NULL){
    newnode->link_data = number;
    newnode->next = NULL;
    front = newnode;
    l = newnode;    
  }
  else{
    newnode->link_data = number;
    l -> next = newnode;
    l = newnode;
  }
}
int delete_node(struct node *l){
  int node_del;
  struct node *inc;
  for(inc = front ; inc < l ;inc = inc -> next );
  node_del = inc->link_data;
  l = inc;
  l -> next = NULL;
  return node_del; 
}

Ответы [ 2 ]

3 голосов
/ 02 августа 2011
$ gcc -o ll -Wall -g -O0 ll.c
ll.c: In function ‘main’:
ll.c:29:11: warning: implicit declaration of function ‘print’ [-Wimplicit-function-declaration]
ll.c:13:14: warning: unused variable ‘i’ [-Wunused-variable]

Вы хотите использовать printf, а не print.Также есть переменная с именем i, которую вы не используете.

На самом бите печати вы никогда не назначите rear.Вы, вероятно, также не хотите использовать тест inc < rear;Обычно связанные списки заканчиваются, когда их указатель next равен NULL.

В add_node вы указываете front на новый узел.Вы, вероятно, не хотели этого делать.

2 голосов
/ 02 августа 2011

Ну, inc и read - указатели. Так что inc < read не имеет особого смысла (бесполезно сравнивать адреса вот так) Вы можете попробовать:

for (inc = front; inc != rear; inc = inc->next)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...