编程之美里很tricky的解法明天去看一看
#include <iostream> using namespace std; typedef struct Node { char data; struct Node* next; }Node, *pNode; pNode Init(char* a, int len) { int i; pNode head, p, q; head = new Node(); head->data = a[0]; q = head; for (i = 1; i < len; ++i) { p = new Node(); p->data = a[i]; q->next = p; q = p; } q->next = NULL; return head; } void printList(pNode p) { while(p) { cout<<p->data<<" "; if (p->next) { p = p->next; } else { cout<<endl; break; } } } pNode findCircle(pNode p , int bitmap) { while(p) { if (bitmap & (1 << (p->data - 'A'))) { return p; } bitmap |= (1 << (p->data - 'A')); p = p->next; } return NULL; } int main(void) { pNode head, re; int bitmap = 0; //char a[] = "ABCDEC";// char a[] = {'A', 'B', 'C', 'D', 'E', 'C'}; head = Init(a, sizeof(a) / sizeof(char)); //head = Init(a, strlen(a)); printList(head); re = findCircle(head, bitmap); if (re) { cout<<re->data<<endl; } else cout<<"不存在circle"<<endl; return 0; }