#include
#include
typedef struct node
{
int value;
struct node *next;
}NODE, *NODEP;
//新建空链表
NODEP create()
{
NODEP p;
p = (NODEP)malloc(sizeof(NODE));
p->next = NULL;
}
//插入,头插、尾插
void insert(NODEP head, int d)
{
NODEP p, q;
p = (NODEP)malloc(sizeof(NODE));
p->value = d;
p->next = NULL;
//inset in head
//p->next = head->next;
//head->next = p;
//return;
//insert in tail
if (head->next == NULL){
head->next = p;
return;
}
q = head->next;
while(q->next)
q = q->next;
q->next = p;
return;
}
//输出
void output(NODEP head)
{
NODEP p;
p = head->next;
if(p == NULL)
printf("NULL\n");
while(p)
{
printf("%-5d", p->value);
p = p->next;
}
}
//删除单个节点,从头、从尾删除
NODEP delete(NODEP head)
{
NODEP p, q;
q = head;
p = head->next;
//delete from head
//head->next = p->next;
//free(p);
//delete from tail
if(p == NULL)
return head;
while(p->next != NULL){
q = p;
p = p->next;
}
free(p);
q->next = NULL;
return head;
}
//清空
void clear(NODEP head)
{
NODEP p, q;
p = head->next;
if(head->next == NULL)
{
printf("NULL1");
return;
}
while(p)
{
q = p;
p = p->next;
free(q);
}
head->next = NULL;
return;
}
void main()
{
int d;
NODEP head = NULL;
head = create();
while(1)
{
scanf("%d", &d);
if(!d)
break;
else
insert(head, d);
}
printf("OUTPUT\n");
output(head);
clear(head);
printf("\nOUTPUT\n");
output(head);
}