Ich versuche, die Funktion "enqueue" mein Professor zu verstehen, aber ich bekomme keine Schritte.Enqueue-Funktion in verketteten Liste
struct queue_node {
int item;
struct queue_node* next;
};
typedef struct queue_node* queue;
int enqueue (queue* tail, int i) {
queue n;
queue *iter;
n = (queue)malloc(sizeof(struct queue_node));
if (!n) return 1;
n->item = i;
n->next = NULL;
for (iter=tail; *iter != NULL; iter = &((*iter)->next)
;
*iter = n;
return 0;
}
Erstens, dass "typedef struct queue_node * queue;" ist verwirrend mich so habe ich versucht, den Code auf diese Weise (bitte korrigieren Sie den Code, wenn ich falsch liege) neu zu interpretieren
die Lösung meines Professor habe ich versucht, eine „enqueue zu tun, bevor Sie versuchenstruct queue_node {
int item;
struct queue_node* next;
};
typedef struct queue_node queue;
int enqueue (queue **tail, int i) {
queue *n;
queue **iter;
n = (queue)malloc(sizeof(struct queue_node));
if (!n) return 1; --->what does that mean?
n->item = i;
n->next = NULL;
for (iter=tail; **iter != NULL; iter = &((*iter)->next)--->last part of the for is unclear to me... can i rewrite it as "iter = **((iter)->next)"?
;
*iter = n; -->this is the part i don't really get...
return 0;
}
So durch die Art und Weise zu lesen "Funktion auf eigene Faust
typedef struct node{
int value;
struct node *next;
}node;
void enqueue(node *head,int data){
if(head->next != NULL){
enqueue(head->next,data);
}
node *new=NULL;
new=malloc(sizeof(node));
new->value=data;
new->next=NULL;
head->next=new;
}
Ist das gut? oder ich kann es nicht benutzen? Vielen Dank an alle im Voraus für die Hilfe
Entfernen Sie einfach die Typedef komplett, fügen Sie ein paar Struct Keywords hinzu, und Sie werden für den Rest Ihres Lebens glücklich sein. – wildplasser
Es scheint, als würde etwas in der letzten for-Schleife des Professors fehlen, ich erwartete ein anderes ')' –
Für C ist das egal, aber wenn Sie C++ verwenden, können Sie 'new' nicht als Namen für Variablen verwenden. Es ist ein Schlüsselwort für die Zuordnung – meetaig