#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define FAILURE 10000
#define SUCCESS 10001
struct linklist
{
int data;
struct linklist *next;
};
typedef int elemtype ;
void print(elemtype e)
{
printf("%d ", e);
}
int headinsert(struct linklist *l, elemtype e)
{
if(l == NULL)
{
return FAILURE;
}
struct linklist *q = l;
struct linklist *p;
p = (struct linklist *)malloc(sizeof(struct linklist));
p->data = e;
p->next = q->next;
q->next = p;
return SUCCESS;
}
int tailinsert(struct linklist *l, elemtype e)
{
if(l == NULL)
{
return FAILURE;
}
struct linklist *q = l;
struct linklist *p;
p = (struct linklist *)malloc(sizeof(struct linklist));
p->data = e;
p->next = NULL;
while(q->next)
{
q = q->next;
}
q->next = p;
return SUCCESS;
}
int linktraverse(struct linklist *l, void (*p)(elemtype))
{
if (NULL == l)
{
return FAILURE;
}
struct linklist *q = l;
while (q->next)
{
q = q->next;
p(q->data);
}
return SUCCESS;
}
int main()
{
int ret;
struct linklist first = NULL;
first = (struct linklist )malloc(sizeof(struct linklist));
if(first == NULL)
{
printf(“Init Failure”);
return 0;
}
first->next = NULL;
elemtype n;
int i;
/ for(i = 0; i < 10; i++) //头插
{
ret = headinsert(first,i);
if(ret == FAILURE)
{
printf(“Headinsert %dth Failure!\n”,i+1);
}
else if(ret == SUCCESS)
{
printf(“Headinsert %dth Success!\n”,i+1);
}
}/
for(i = 0; i < 10; i++) //尾插
{
ret = tailinsert(first,i);
if(ret == FAILURE)
{
printf("Tailinsert %dth Failure!\n",i+1);
}
else if(ret == SUCCESS)
{
printf("Tailinsert %dth Success!\n",i+1);
}
}
ret = linktraverse(first, print);
if (ret == FAILURE)
{
printf("\nTraverse Falure!\n");
}
else
{
printf("\nTraverse Success!\n");
}
}