List.h
#include<iostream>
using namespace std;
#define Elemtype char
typedef struct node
{
Elemtype date;
struct node* next;
}Node;
typedef struct node* LinkList;
void CreateListHead(LinkList *L,char *p);
int CompareList(LinkList L);
List.cpp
#include"List.h"
#include<iostream>
using namespace std;
void CreateListHead(LinkList *L,char *t)
{
LinkList p,r;
*L = (LinkList)malloc(sizeof(Node));
r = *L;
while (*t != 0)
{
p = (Node*)malloc(sizeof(Node));
p->date = *t;
r->next = p;
r = p;
t++;
}
r->next = NULL;
}
int CompareList(LinkList L)
{
Node*p1 = L->next;
Node*p2 = L->next;
while (p2 != NULL)
{
p1 = p1->next;
p2 = p2->next;
if ( p2 == NULL)
break;
p2 = p2->next;
}
Node* pre = NULL;
Node* head = p1;
Node* next = p1->next;
while ( next != NULL)
{
head->next = pre;
pre = head;
head = next;
next = next->next;
}
head->next = pre;
p1 = head;
p2 = L->next;
while(p1 != NULL)
{
if(p1->date != p2->date)
return -1;
p1 = p1->next;
p2 = p2->next;
}
return 0;
}
#include"List.h"
#include<iostream>
using namespace std;
void main()
{
LinkList L;
char p[20] = "asddsa";
CreateListHead(&L,p);
int boolenth = CompareList(L);
if (boolenth == 0)
cout<<"该字符串为回文链表"<<endl;
else
cout<<"该字符串不是回文链表"<<endl;
}