【发布时间】:2017-07-01 22:55:54
【问题描述】:
我试图在 C 中创建一个删除每个奇数定位节点的函数。例如1,2,3,4 变为2,4。
这是我尝试过的,但它似乎不起作用。
我在谈论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;
}
【问题讨论】:
标签: c pointers linked-list