Я пытался создать функцию на C, которая удаляет каждый нечетный позиционированный узел. Например, 1,2,3,4
становится 2,4
.Удаление каждого нечетного позиционированного узла в связанном списке в C
Вот что я пробовал, но он, похоже, не работает. Я говорю о deletee
функции. Я изменил его, но список, похоже, не меняется.
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int val;
struct node *next;
} node;
typedef struct ll {
node *head;
} ll;
ll *newll() {
ll *k = malloc(sizeof(ll));
k->head = NULL;
return k;
}
void insert(ll *l, int vl) {
node *tmp = malloc(sizeof(node));
tmp->next = NULL;
tmp->val = vl;
if (l->head == NULL) {
l->head = tmp;
return;
}
node *s = l->head;
while (s->next != NULL)
s = s->next;
s->next = tmp;
}
void printll(ll *l) {
node *s = l->head;
while (s != NULL) {
printf("%d ", s->val);
s = s->next;
}
}
void deletee(ll *l) {
node *k = l->head;
while (k != NULL && k->next != NULL) {
node *tmp = k->next->next;
k = tmp;
}
}
int main() {
ll *ll1 = newll();
insert(ll1, 5);
insert(ll1, 6);
insert(ll1, 8);
insert(ll1, 9);
insert(ll1, 10);
insert(ll1, 11);
deletee(ll1);
printll(ll1);
return 0;
}
Спасибо, что он наконец работает :)))). Было бы очень приятно, если бы вы могли объяснить, что вы сделали с этими указателями указателей, но я понимаю, если у вас нет времени. – asddf
Добавлено объяснение – ikegami