본문으로 바로가기
재귀함수

#include<stdio.h>
#include<stdlib.h>

int Func(int num_);

void main()
{
printf("%d\n",Func(5));
}

int Func(int num_)
{
static int ans=0;
static int num=0;
if(num>num_)
return ans;
ans = ans + num;
num++;
Func(num_);


}

연결리스트 - InsertNode,AddNode,DelNode

#include <stdio.h>
#include <malloc.h>

typedef struct node{
int data;
struct node *link;
}Linklist;

Linklist* Head=0;

/*
Linklist* search(int num)
{
static Linklist* tmpss;
Linklist* tmp;

static int nums=0;

if(nums>num)
return tmpss;

if(nums>0)
{
tmp = tmpss->link;
tmpss = tmp;
}

//맨처음. Head=0,num=1.
else
{
tmpss=Head;
}

nums++;

search();
}
*/

void InsertNode(int Data)
{
static int num = 0;
static Linklist* tmpss;
static Linklist* tmpssx;

Linklist* tmp;
tmp = (Linklist*)malloc(sizeof(Linklist));

if(Head==0)
{
tmp->data = Data;
tmp->link = 0;
Head = tmp;
return;
}

if(Head!=0)
{
if(Head->link==0)
{
Head->link = tmp;
tmp->link = 0;
tmp->data = Data;
return;
}
else
{
if(num==0)
tmpss = Head->link;

if(tmpss->link==0)
{
tmp->data=Data;
tmp->link = 0;
tmpss->link = tmp;
return;
}

else
{
tmpssx = tmpss->link;
tmpss = tmpssx;
num++;
InsertNode(Data);
}
}
}
}

void AddNode(int Data,int Datain)
{
Linklist * tmp;
tmp = (Linklist*)malloc(sizeof(Linklist));
static Linklist * tmpss;
static Linklist * tmpssx;
static int num = 0;

if(num==0)
tmpss = Head->link;

if(Head->data==Data)
{
if(Head->link==0)
{
tmp->data = Datain;
Head->link = tmp;
tmp->link = tmpss;
return;
}
else
{
tmpss = Head->link;
tmp->data = Datain;
Head->link = tmp;
tmp->link = tmpss;
return;
}
}
else
{
if(tmpss->data==Data)
{
if(tmpss->link==0)
{
tmpss->link=tmp;
tmp->data = Datain;
tmp->link=0;
return;

}
else
{
tmp->data = Datain;
tmp->link = tmpss->link;
tmpss->link = tmp;
return;
}
}
else
{
tmpssx = tmpss->link;
tmpss = tmpssx;
num++;
AddNode(Data,Datain);

}
}

}

void DelNode(int Data)
{
Linklist * tmp;
tmp = (Linklist*)malloc(sizeof(Linklist));
static Linklist * tmpss;
static Linklist * tmpssx;
static Linklist * tmpssx2;
static int num = 0;
if(Head==0)
return;
if(num==0)
{
tmpss = Head->link;
tmpssx2 = Head;
}
else
{

}
if(Head->data==Data)
{
if(Head->link==0)
{
free(Head);
Head = 0;
return;
}
else
{
free(Head);
Head = tmpss;
return;
}
}

else
{
if(tmpss->data==Data)
{
if(tmpss->link==0)
{
free(tmpss);
tmpssx2->link = 0;
return;

}
else
{
tmpssx2->link = (tmpss->link)->link;
free(tmpss);
return;
}
}
else
{
tmpssx = tmpss->link;
tmpssx2 = tmpss;
tmpss = tmpssx;
num++;
DelNode(Data);

}
}

}



void main()
{
printf("%p\n",Head);

InsertNode(10);
printf("%d,%p\n",Head->data,Head->link);
InsertNode(20);
printf("%d,%p\n",Head->data,(Head->link)->link);
InsertNode(30);
printf("%d,%p\n",Head->data,((Head->link)->link)->link);
InsertNode(40);
printf("%d,%p\n",Head->data,(((Head->link)->link)->link)->link);
InsertNode(50);
printf("%d,%p\n",Head->data,(((Head->link)->link)->link)->link);
AddNode(10,35);
printf("%d,%p\n",Head->data,Head->link);
AddNode(35,45);
printf("%d,%p\n",Head->data,Head->link);

DelNode(10);
printf("%d,%p\n",Head->data,Head->link);
DelNode(35);
printf("%d,%p\n",Head->data,Head->link);
DelNode(45);
printf("%d,%p\n",Head->data,Head->link);
DelNode(50);
printf("%d,%p\n",Head->data,Head->link);
}