#include <iostream>

using namespace std;

#define OK 1
#define ERROR 0

typedef int Status;

typedef struct LNode
{
	int data;
	struct LNode *next;
}LNode, *LinkList;

Status InitList_L(LinkList &L)
{
	L = new LNode;
	L->next = NULL;
	return OK;
}

Status DestroyList_L(LinkList &L)
{
	LinkList p;
	while(L)
	{
		p = L;
		L = L->next;
		delete p;
	}
	return OK;
}

Status ClearList(LinkList &L)
{
	LinkList p, q;
	p = L->next;
	while(p)
	{
		q = p->next;
		delete p;
		p = q;
	}
	L->next = NULL;
	return OK;
}

Status GetElem_L(LinkList L, int i, int &e)
{
	LinkList p = L->next;
	int j = 1;
	while(p && j<i)
	{
		p = p->next;
		++j;
	}
	if(!p || j>i)
	{
		return ERROR;
	}
	e = p->data;
	return OK;
}

Status LocateElem_L(LinkList L, int e, LNode *node_p)
{
	LinkList p = L->next;
	while(p && p->data!=e)
	{
		p = p->next;
	}
	if(!p)
	{
		return ERROR;
	}
	node_p = p;
    return OK;
}

Status ListInsert_L(LinkList &L, int i, int e)
{
	LinkList p = L;
	int j = 1;
	while(p && j<i)
	{
		p = p->next;
		j++;
	}
	if(!p || j>i)
	{
		return ERROR;
	}
	LNode *s = new LNode;
	s->data = e;
	s->next = p->next;
	p->next = s;
	return OK;
}

Status ListDelete_L(LinkList &L, int i, int &e)
{
	LinkList p = L;
	int j = 0;
	while(p->next && j<i-1)
	{
		p = p->next;
		j++;
	}
	if(!(p->next) || j>i-1)
	{
		return ERROR;
	}
	LinkList q = p->next;
	p->next = q->next;
	e = q->data;
	delete q;
	return OK;
}

void CreateList_f(LinkList &L,int n)
{
	L=new LNode;
	L->next=NULL;
	for(int i = n;i > 0;i--)
	{
		LinkList p = new LNode;
		cin>>p->data;
		p->next = L->next;
		L->next = p; 
	}
 } 

int main()
{
	LinkList L;
	InitList_L(L);
	cout<<"Please input the number of element in the link list:"<<endl;
	CreateList_f(L,5);
	LinkList p = L->next;
	for(int i = 0;i < 5; i++)
	{
		cout << p->data << endl;
		p = p->next; 
	}
	return 0;
}