재귀함수
#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);
}
'[ IT ] > C++, 자료구조' 카테고리의 다른 글
자료구조 수업 2 자료구조란 / Stack의 Push,Pop / 연결리스트 / Queue (0) | 2015.06.24 |
---|---|
자료구조 수업 1 (0) | 2015.06.24 |
C++ namespace / using / bool (0) | 2015.06.24 |
C++ 가상함수 / 추상 Class / Template (0) | 2015.06.24 |
C++ String / 상속 / 바인딩 (0) | 2015.06.24 |