#include <stdlib.h>
#include <stdio.h>
struct list {
int data;
struct list *next;
};
struct list *list_search(struct list *first, int d)
{
struct list *p = first;
while(p)
{
if (p->data == d)
{
break;
}
p = p->next;
}
return p;
}
int list_insert(struct list **first, int d)
{
struct list *i = NULL, *l = NULL;
if (list_search(*first, d))
{
return 1;
}
i = (struct list*)malloc(sizeof(struct list*));
if (i == NULL)
{
return 0;
}
i->data = d;
i->next = NULL;
if (*first == NULL)
{
*first = i;
}
else
{
l = *first ;
while(l->next)
{
l = l->next;
}
l->next = i;
}
return 1;
}
void list_print(struct list *first)
{
struct list *p = first;
printf("list:\n");
while (p)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
void list_reverse(struct list **first)
{
struct list *last = NULL;
struct list *curr = *first;
struct list *t = NULL;
while (curr)
{
t = curr->next;
curr->next = last;
last = curr;
curr = t;
}
*first = last;
}
int main()
{
int array[8] = {9, 0, 0, 12, 1, 1, 81, 66};
int i;
struct list *l = NULL;
for (i=0; i<8; i++)
{
if (list_insert(&l, array[i]) != 1)
{
printf("list insert error.\n");
}
}
list_print(l);
list_reverse(&l);
list_print(l);
}