#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode
{
int data;
struct ListNode *next;
}ListNode;
ListNode *ReverseList(ListNode *list)
{
ListNode *p, *q;
p = list->next;
list->next = NULL;
while (p != NULL)
{
q = p->next;
p->next = list->next;
list->next = p;
p = q;
}
return list;
}
ListNode *DeleteNode(ListNode *list, int min, int max)
{
ListNode *p = list->next, *q = list;
while (p != NULL)
{
if (p->data>min && p->data<max)
{
q->next = p->next;
free(p);
p = q;
}
else
q = q->next;
p = p->next;
}
return list;
}
void TraverseList(ListNode *list)
{
ListNode *itr = list->next;
while (itr != NULL)
{
printf("%d ", itr->data);
itr = itr->next;
}
printf("\n");
}
void FreeList(ListNode *list)
{
ListNode *itr = list, *t;
while (itr != NULL)
{
t = itr->next;
free(itr);
itr = t;
}
}
ListNode *CreateList()
{
ListNode *head, *p;
int num;
head = (ListNode *)malloc(sizeof(ListNode));
head->data = 0;
head->next = NULL;
scanf("%d", &num);
while (num != -1)
{
p = (ListNode *)malloc(sizeof(ListNode));
p->data = num;
p->next = head->next;
head->next = p;
scanf("%d", &num);
}
return head;
}
int main()
{
ListNode *list;
int min, max;
printf("input data (end: -1): ");
list = CreateList();
TraverseList(list);
printf("min: ");
scanf("%d", &min);
printf("max: ");
scanf("%d", &max);
list = DeleteNode(list, min, max);
TraverseList(list);
FreeList(list);
return 0;
}
#include <stdlib.h>
typedef struct ListNode
{
int data;
struct ListNode *next;
}ListNode;
ListNode *ReverseList(ListNode *list)
{
ListNode *p, *q;
p = list->next;
list->next = NULL;
while (p != NULL)
{
q = p->next;
p->next = list->next;
list->next = p;
p = q;
}
return list;
}
ListNode *DeleteNode(ListNode *list, int min, int max)
{
ListNode *p = list->next, *q = list;
while (p != NULL)
{
if (p->data>min && p->data<max)
{
q->next = p->next;
free(p);
p = q;
}
else
q = q->next;
p = p->next;
}
return list;
}
void TraverseList(ListNode *list)
{
ListNode *itr = list->next;
while (itr != NULL)
{
printf("%d ", itr->data);
itr = itr->next;
}
printf("\n");
}
void FreeList(ListNode *list)
{
ListNode *itr = list, *t;
while (itr != NULL)
{
t = itr->next;
free(itr);
itr = t;
}
}
ListNode *CreateList()
{
ListNode *head, *p;
int num;
head = (ListNode *)malloc(sizeof(ListNode));
head->data = 0;
head->next = NULL;
scanf("%d", &num);
while (num != -1)
{
p = (ListNode *)malloc(sizeof(ListNode));
p->data = num;
p->next = head->next;
head->next = p;
scanf("%d", &num);
}
return head;
}
int main()
{
ListNode *list;
int min, max;
printf("input data (end: -1): ");
list = CreateList();
TraverseList(list);
printf("min: ");
scanf("%d", &min);
printf("max: ");
scanf("%d", &max);
list = DeleteNode(list, min, max);
TraverseList(list);
FreeList(list);
return 0;
}