Code Snippet
- #include <iostream>
- #define Reverse2
- using namespace std;
- struct linka{
- int data;
- linka* next;
- };
- void reverse(linka* &head)
- {
- if(head == NULL)
- return;
- linka* pPre = NULL;
- linka* pCur = head;
- while(pCur != NULL)
- {
- linka* pNext = pCur->next;
- pCur->next = pPre;
- pPre = pCur;
- pCur = pNext;
- }
- head = pPre;
- }
- linka* reverse2(linka* cur, linka*& head)
- {
- if(cur == NULL || cur->next == NULL)
- {
- head = cur;
- return cur;
- }
- else
- {
- linka* temp = reverse2(cur->next, head);
- temp->next = cur;
- return cur;
- }
- }
- int main()
- {
- linka arrayTest[10];
- for(int i = 0; i < 10; i++)
- {
- arrayTest[i].data = i;
- arrayTest[i].next = arrayTest+ i +1;
- cout<< arrayTest[i].data<<endl;
- }
- arrayTest[9].next = NULL;
- linka* phead = arrayTest;
- #ifdef Reverse2
- linka* cur = reverse2(phead, phead);
- cur->next = NULL;
- #else
- reverse(phead);
- #endif
- while(phead->next != NULL)
- {
- cout<< phead->data<<endl;
- phead = phead->next;
- }
- cout<<phead->data<<endl;
- }