// RecursiveStruct.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
//递归
//1,单链表
struct node{
int data;
node * next;
};
typedef node * nodePtr;
//1.1 单链表递归
// p1->p2->p3....
// p1->pLast
//链表负数计数
//头递归,先计算递归,在计算本函数
int getCoutZeroOfLink(nodePtr p){
if(p==NULL)return 0;
int cout = getCoutZeroOfLink(p->next);
if(p->data<0)cout++;
return cout;
}
int main(int argc, char* argv[])
{
nodePtr p1 =(node *)malloc(sizeof(node));
nodePtr p2 =(node *)malloc(sizeof(node));
nodePtr p3 =(node *)malloc(sizeof(node));
nodePtr p4 =(node *)malloc(sizeof(node));
p1->data=-2;
p2->data=1;
p3->data=-1;
p4->data=5;
p1->next=p2;
p2->next=p3;
p3->next=p4;
p4->next=NULL;
cout<<getCoutZeroOfLink(p1)<<endl;
return 0;
}