#include <stdio.h>
#include <stdlib.h>
typedef int element;
typedef struct ListNode{
element data;
struct ListNode *link;
}ListNode;
void error(char *message){
fprintf(stderr, "%s\n", message);
exit(1);
}
void insert_node(ListNode *phead, ListNode *p, ListNode *new_node){
if(phead == NULL){
new_node->link = NULL;
phead = new_node;
}else if(p == NULL){
new_node->link = phead;
phead = new_node;
}else{
new_node->link = p->link;
p->link = new_node;
}
}
void remove_node(ListNode *phead, ListNode *p, ListNode *removed){
if(p == NULL){
phead = (phead)->link;
}else{
p->link = removed->link;
}
free(removed);
}
void display(ListNode *head){
ListNode *p=head;
while(p!=NULL){
printf("%d->", p->data);
p = p->link;
}
printf("\n");
}
ListNode *search(ListNode *head, int x){
ListNode *p;
p = head;
while(p!=NULL){
if(p->data == x) return p;
p = p->link;
}
return p;
}
ListNode *concat(ListNode *head1, ListNode *head2){
ListNode *p;
if(head1 == NULL) return head2;
else if(head2 == NULL) return head1;
else{
p = head1;
while(p->link!=NULL){
p = p->link;
}
p->link = head2;
return head1;
}
}
ListNode *reverse(ListNode *head){
ListNode *p, *q, *r;
p = head;
q = NULL;
while(p!=NULL){
r = q;
q = p;
p = p->link;
q->link = r;
}
return q;
}
int main()
{
ListNode *list1 = NULL, *list2 = NULL;
ListNode *p;
p->link=list1;
ListNode *p1;
p1=(ListNode *)malloc(sizeof(ListNode));
p1->data=10;
p1->link=NULL;
display(p1);
return 0;
}