string - Exam exercise about lists and pointers C -
i need fix exam exercise since teacher ask me how fix tomorrow @ oral test:
nodo *cancellatutto(nodo *a, char *k) { nodo *p,*q; p = a; if (p == null) return null; while (p != null) { if (strcmp(p->chiave, k) == 0 ) { if (p->prec == null && p->succ == null) return null; if (p->succ == null && p->prec != null) { q = p; p = p->prec; p->succ = null; free(q); } if (p->prec == null && p->succ != null) { q = p; p = p->succ; p->prec = null; free(q); } if (p->prec != null && p->succ != null) { q = p; p = p->succ; q->prec->succ = p; p->prec = q->prec; free(q); } } else { p = p->succ; } } return a; }
this function should see if 2 string equals (one in struct linked list , other k string) , erase string equal k, there 2 output cases wrong:
case 1:
k : dog
if insert 3 strings in : dog -> cat -> cat function doesnt erase "dog" , show me output: dog -> cat -> cat (correct output cat -> cat)
case 2:
another error found is: if list : dog -> dog -> cat output dog -> dog -> cat (right output should be: cat)
all other cases should work right.
struct :
struct nodo { char *chiave; struct nodo *prec; struct nodo *succ; }; typedef struct nodo nodo;
rest of code is: (read comprehend part personal test; useless exam)
int main() { nodo *lista=createliststring(); // create list visualizza(lista); // views char *stringa="ciao"; // create k string lista=cancellatutto(lista,stringa); // call function visualizza(lista); // views }
please note need fix this, not write code.
please dont @ overflows, errors, , such things in these function! fix first function! others personal test.
@bluepixy has given really strong hint in comments, going expand on:
case 1:
k : dog
if insert 3 strings in : dog -> cat -> cat function doesnt erase "dog" , show me output: dog -> cat -> cat (correct output cat -> cat)
case 2:
another error found is: if list : dog -> dog -> cat output dog -> dog -> cat (right output should be: cat)
in both of these cases, string want remove occurs @ head of list. cancellatutto
needs return new head of list in case, not a
1
1. if
a
supposed represent head of list, please use more meaningful name variable, such head
or listhead
(or whatever native language equivalent be).
Comments
Post a Comment