Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.
Μπορεί κάποιος να μ πει για ποιο λόγο δεν μπορώ να διαβάσω τα δυο  char tis λίστας. στην συνάρτηση εισαγωγής  Insertion();.Είναι απλή συνδεδεμένη λίστα αυτό που θέλω να κάνω.
Σας ευχαριστώ εκ των προτέρων.!
 
 
 
 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
typedef struct list_node{
    char *command;
    char *username;
    struct list_node *next;
}List;
 
void insertion(List *head,List *newnode)
{
 if(head==NULL)
   {head=(List *) malloc (sizeof (List));
    printf("Dwse entolh: ");
    scanf("%s",head->command);
    printf("Dwse onoma: ");
    scanf("%s",head->username);
    head->next=NULL;}
 else
   {List *current;
    current=head;
    while(current->next!=NULL)
          current=current->next;
 
    newnode=(List*)malloc(sizeof (List));
    newnode=current;
    printf("Dwse entolh: ");
    scanf("%s",(newnode->command));
    printf("Dwse onoma: ");
    scanf("%s",(newnode->username));
    }
}
int main()
{
int counter=0;
List *head,*newnode;
head=NULL;
int choice;
do{
    printf("\n\n****************************************************************************\n");
    printf("MENU\n");
    printf("\nDose epilogi.\n");
    printf("<1> Gia eisagwgh stin lista\n");
    printf("\n_________________________________________________\n");
 
    switch(choice){
        case 1:{
        insertion(head,newnode);
        }
    }
  }
while(choice!=7);
  return 0;
}
 
Δημοσ.

πρέπει να κάνεις malloc και στα char* σου,

 

επίσης ο τρόπος που προσθέτεις καινούργιο node είναι λάθος.

Μπορεις να μ δειξεις πως θα κάνω την malloc sta char * m.?Στην αρχη τα δηλωνα ετσι Char command[60] αλλα και  πάλι δεν μου ετρεχε.

θεωρω το λαθοσ μ στην εισαγωγη του νεου node επειδή δεν έβαλα την εντολη ''newnode->next=NULL; '' στο τέλος.

Δημοσ.

Το malloc είναι πολύ απλό να το κάνεις στα char *.

list->command = (char*) malloc(50);

Αν πριν το είχες char command[60] θα έπρεπε να σου παίζει, ενδεχομένως να ήταν κάτι άλλο λάθος.

 

Στο while loop που κάνεις τερματίζεις ουσιαστικά στο τελευταίο node όπου 

current->next == NULL

Εσύ έτσι όπως το έχεις γράψει απλά αντικαθιστάς το current node με το new node.

Αλλά πρέπει να κολλήσεις το newnode στο next του current node

 

Οπότε φτιάχνεις το newnode σου το γεμίζεις και στο τέλος κάνεις:

current->next = newnode;
newnode->next = NULL;
  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...