Я пишу связанный список как часть более крупного проекта и столкнулся с проблемой. Этот тестовый тест принимает строку разделенных запятыми диапазонов (где диапазон в этом случае является целым числом или двумя целыми числами, разделенными тире) и добавляет каждый диапазон в отдельный список. В настоящее время он печатает только первые два диапазона, и я не понимаю, почему. Вот код:Связанный список не распечатывает все значения
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char port_list[] = "22-25,80,443-445,4200-4205";
struct range_list {
struct range_list *next;
char *range;
};
struct range_list *head = (struct range_list*) malloc(sizeof(struct range_list));
head->next = 0;
head->range = strtok(port_list, ",");
struct range_list *iter = (struct range_list*) malloc(sizeof(struct range_list));
head->next = iter;
iter->next = 0;
while((iter->range = strtok(NULL, ",")) != NULL) {
iter = (struct range_list*) malloc(sizeof(struct range_list));
iter->next = iter;
iter->next = 0;
}
for(iter=head; iter != 0; iter=iter->next) {
printf("%s\n", iter->range);
}
}
В настоящее время выход:
22-25
80
И в идеале я хотел бы:
22-25
80
443-445
4200-4205
Спасибо за любую помощь заранее! Я уверен, что это простая проблема. Я просто испугался написания связанных списков, так что я очень не в курсе.
Отсутствующие '#include' –
EOF
О упс. Идеон не жаловался по какой-то причине. – DTSCode
обновлено – DTSCode