Skip to content

Instantly share code, notes, and snippets.

@KentaKomai
Created July 12, 2013 02:34
Show Gist options
  • Save KentaKomai/5980992 to your computer and use it in GitHub Desktop.
Save KentaKomai/5980992 to your computer and use it in GitHub Desktop.
#include <iostream>
#include <algorithm>
using namespace std;
struct ListNode {
int data;
ListNode * next;
}; typedef ListNode * ListPtr;
/**
* countNodeFromList
* count node from list by recursion
* @param ListNode * ptr : node root
*/
int CountNodeFromList(ListNode * ptr){
if(ptr == NULL) return 0;
int behind_count = CountNodeFromList(ptr->next);
return behind_count + 1;
}
/**
* OutputListFromFront
* ListNode->data to standard output by front
* @param ListNode * ptr : node root
*/
void OutputListFromFront(ListNode * ptr){
if(ptr != NULL){
cout<< ptr->data <<endl;
OutputListFromFront(ptr->next);
}
}
/**
* OutputListFromRear
* ListNode->data to standard output by read
* @param ListNode * ptr : node root
*/
void OutputListFromRear(ListNode * ptr){
if(ptr != NULL){
OutputListFromRear(ptr->next);
cout<< ptr->data <<endl;
}
}
int main(){
cout<<"start main!"<<endl;
ListPtr list_root;
ListNode * l1 = new ListNode; l1->data =9;
ListNode * l2 = new ListNode; l2->data =4;
ListNode * l3 = new ListNode; l3->data =10;
ListNode * l4 = new ListNode; l4->data =18;
ListNode * l5 = new ListNode; l5->data =3;
ListNode * l6 = new ListNode; l6->data =43;
ListNode * l7 = new ListNode; l7->data =76;
ListNode * l8 = new ListNode; l8->data =22;
list_root = l1; l1->next = l2; l2->next = l3; l3->next = l4;
l4->next = l5; l5->next = l6; l6->next = l7; l7->next = l8;
int count = CountNodeFromList(list_root);
cout<<"Node Count : "<<count<<endl;
cout<<"------------------------------"<<endl;
OutputListFromFront(list_root);
cout<<"------------------------------"<<endl;
OutputListFromRear(list_root);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment