I für das Hinzufügen von Element diesen Code schrieb:Einzel Verwendung im Vergleich zu Doppelzeiger in Linked in C implementiert Listen
struct node{
int info;
struct node* link;
};
void append (struct node **q, int num)
{
struct node *temp, *r ;
if (*q == NULL) // if the list is empty, create first node
{
temp = (struct node*) malloc (sizeof (struct node)) ;
temp -> info = num ;
temp -> link = NULL ;
*q = temp ;
}
else{
temp = *q ;
/* go to last node */
while (temp -> link != NULL)
temp = temp -> link ;
/* add node at the end */
r = (struct node *)malloc (sizeof (struct node)) ;
r -> info = num ;
r -> link = NULL ;
temp -> link = r ;
}
}
und ich Funktion wie folgt anhängen nennen: append(&list, 10);
wo list
ist die Zeiger auf die verkettete Liste
Dieser Code funktioniert, aber wenn ich Einzelzeiger in Append-Funktion (mit * q anstelle von ** q) verwenden und Änderungen vornehmen (wie unten getan und auch wenn ich es nenne), es funktioniert nicht. Was unten ?: mit dem Code falsch ist
void append (struct node *q, int num)
{
struct node *temp, *r ;
if (q == NULL) // if the list is empty, create first node
{
temp = (struct node*) malloc (sizeof (struct node)) ;
temp -> info = num ;
temp -> link = NULL ;
q = temp ;
}
else{
temp = q ;
/* go to last node */
while (temp -> link != NULL)
temp = temp -> link ;
/* add node at the end */
r = (struct node *)malloc (sizeof (struct node)) ;
r -> info = num ;
r -> link = NULL ;
temp -> link = r ;
}
}
Warum wird dies als C++ markiert? – iammilind
weil C und C++ eng verwandt sind und ich annehme, dass jemand mit dem Wissen von C++ mir hier helfen könnte. – Jatin
Übrigens ist dies ein schlechter Ansatz, um ein Element an die Liste anzuhängen, weil die Laufzeit linear mit der Anzahl der Elemente ansteigt. Der traditionelle Ansatz besteht darin, einen Zeiger auf beide Enden der Liste zu halten, der das Anhängen in konstanter Zeit ermöglicht. –