判断单向链表是否回文

来源:互联网 发布:追风软件 编辑:程序博客网 时间:2024/05/22 12:22
List.h
#include<iostream>using namespace std;#define Elemtype chartypedef 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;}


ListMain.cpp
#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;}


原创粉丝点击