연결리스트(재귀)원본

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> #include <malloc.h> #define EMPTY 0 typedef struct node { int data; struct node *link; }General; General* 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(); } */ General* GetNode(){ General* newNode = (General *)malloc(sizeof(General)); newNode->link = EMPTY; return newNode; } void InsertNode(int Data){ static int num = 0; static General* tmpss; static General* tmpssx; General* newNode = GetNode(); if (Head == 0){ newNode->data = Data; Head = newNode; return; } if (Head->link == 0){ Head->link = newNode; newNode->data = Data; return; } else { if (num == 0) tmpss = Head->link; if (tmpss->link == 0){ newNode->data = Data; tmpss->link = newNode; 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); }
Editor Settings
Theme
Key bindings
Full width
Lines