標籤:style blog http color os art
1鏈表逆序 http://blog.csdn.net/niuer09/article/details/5961004
typedef struct tagListNode{ int data; struct tagListNode* next;}ListNode, *List;List ReverseList(List head) { if(head->next == NULL || head->next->next == NULL) { return head; /*鏈表為空白或只有一個元素則直接返回*/ } ListNode *t = NULL, *p = head->next, *q = head->next->next; while(q != NULL) { t = q->next; q->next = p; p = q; q = t; } /*此時q指向原始鏈表最後一個元素,也是逆轉後的鏈表的表頭元素*/ head->next->next = NULL; /*設定鏈表尾*/ head->next = p; /*調整鏈表頭*/ return head; }View Code
2判斷是否有環,環的長度
http://www.cnblogs.com/xudong-bupt/p/3667729.html
///判斷鏈表是否有環LinkNode* judgeRing(Linklist list){ LinkNode *fast = list; LinkNode *slow = list; if(list == NULL) return NULL; while(true){ if(slow->next != NULL && fast->next != NULL && fast->next->next != NULL){ slow = slow->next; fast = fast->next->next; } else return NULL; if(fast == slow) return fast; }}///擷取鏈表環長int getRingLength(LinkNode *meetNode){ int RingLength=0; LinkNode *fast = meetNode; LinkNode *slow = meetNode; for(;;){ fast = fast->next->next; slow = slow->next; RingLength++; if(fast == slow) break; } return RingLength;}///擷取鏈表頭到環連接點的長度int getLenA(Linklist list,LinkNode *meetNode){ int lenA=0; LinkNode *fast = list; LinkNode *slow = meetNode; for(;;){ fast = fast->next; slow = slow->next; lenA++; if(fast == slow) break; } return lenA;}View Code