What's wrong with the program?
It went wrong when i print the numbers in the lists. After i prints the last number, it didn't stop, and the program went into wrong memory.
Eager for your answer:

#include <stdio.h>
#include <malloc.h>

#define NULL 0

typedef int ELEMNT_TYPE;
typedef struct node * node_ptr;

struct node
{
	int element;
	node_ptr next;
};

typedef node_ptr position;
typedef node_ptr LIST;

/*

int is_empty(LIST L)
{
	return(L->next==NULL);
}

int is_last(position p, LIST L)
{
	return(p->next==NULL);
}

position find(int x, LIST L)
{
	position p;
	p=L->next;
	while(p!=NULL&&p->element!=x)
		p=p->next;
	return p;
}

void delete(int x, LIST L)
{
	position p, tmp_cell;
	p=find_previous(x, L);
	if(p->next!=NULL)
	{
		tmp_cell=p->next;
		p->next=p->next->next;
		free(tmp_cell);
	}
}

position find_previous(int x, LIST L)
{
	position p;
	p=L;
	while(p->next!=NULL&&p->next->element!=x)
		p=p->next;
	return p;
}

*/


void insert(int x, LIST L, position p)		/*insert after the position p*/
{
	position new_cell;
	new_cell=(position)malloc(sizeof(struct node));
	if(new_cell==NULL)
		printf("Out of space!!!");
	else
	{
		new_cell->element=x;
		new_cell->next=p->next;
		p->next=new_cell;
	}
}

void showlist(LIST L)
{
	while(L->next!=NULL)
	{
		L=L->next;
		printf("%d ", L->element);
	}
}

int main()
{
	int i;
	LIST list=(position)malloc(sizeof(struct node));
	printf("Inserting data...\n");
	for(i=0; i<=10; i++)
		insert(i, list, list);
	printf("This is the list:\n");
	showlist(list);
	printf("Done!\n");
	return 0;
}

What's wrong with the program?

You're missing a NULL in the first node.

int main()
{
   int i;
   LIST list=(position)malloc(sizeof(struct node));
   list->next = NULL;
   printf("Inserting data...\n");
   ...

Thank you, but I think I have found the answer. The problem is that NULL is defined in stdio.h, rather than being 0. I redefined it, which made it dysfunctional.

Thank you, but I think I have found the answer. The problem is that NULL is defined in stdio.h, rather than being 0. I redefined it, which made it dysfunctional.

No, that's NOT the problem. You assume list->next will automatically be NULL after malloc() and that's WRONG. The content of mem chunk malloc() returns is not initialized. That's why the while block in showlist() loops forever.

This question has already been answered. Start a new discussion instead.