int Palindrome_array()
{
listnode *list;
list = (listnode *)malloc(sizeof(listnode));
list->next = NULL;
creat_list(list);
listnode *mid, *end;
mid = list;
end = list;
while(end != NULL && end->next != NULL){
mid = mid->next;
end = end->next->next;
}
if(end != NULL)
mid = mid->next;
listnode *p, *q;
p = mid;
q = mid->next;
while(q != NULL){
p->next = q->next;
q->next = mid;
mid = q;
q = p->next;
}
while(mid != NULL){
if(list->data != mid->data){
printf("not Palindrome_array\n");
return 0;
}
list = list->next;
mid = mid->next;
}
printf("is Palindrome_array\n");
return 1;
}
int merge_list()
{
listnode *list1, *list2, *merge, *tail;
list1 = (listnode *)malloc(sizeof(listnode));
list1->next = NULL;
creat_list(list1);
list2 = (listnode *)malloc(sizeof(listnode));
list2->next = NULL;
creat_list(list2);
merge = (listnode *)malloc(sizeof(listnode));
merge->next = NULL;
tail = merge;
while(list1 != NULL || list2 != NULL){
listnode *new;
new = (listnode *)malloc(sizeof(listnode));
if(list1 == NULL || list2 == NULL){
new->data = (list1 != NULL) ? list1->data : list2->data;
if(list1 != NULL)
list1 = list1->next;
else
list2 = list2 ->next;
}
else{
new->data = (list1->data <= list2->data) ? list1->data : list2->data;
if(new->data == list1->data)
list1 = list1->next;
else
list2 = list2 ->next;
}
tail->next = new;
new->next = NULL;
tail = new;
}
}