/*
#include <stdio.h>
#include <memory.h>
struct node
{
int data; //data
struct node* link; //다음 노드의 주소
};
void view(struct node* h)
{
printf("linked list >> ");
while(h!=NULL)
{
printf("%d-> ",h->data);
h=h->link;
}
printf("\n");
}
int main()
{
struct node n1, n2, n3,n4, newnode; //memory static allocation
// data 초기화
n1.data=3;
n2.data=5;
n3.data=7;
n4.data=9;
newnode.data=4;
//노드끼리 연결
n1.link=&n2;
n2.link=&n3;
n3.link=&n4;
n4.link=NULL;
view(&n1);
//n1 뒤에 newnode 넣기
newnode.link=n1.link;
n1.link=&newnode;
view(&n1);
//n2 뒤에 있는 노드 삭제하기
n2.link=n2.link->link;
view(&n1);
//메모리 동적 할당을 이용하여 n9 만들기
struct node* n9 = (struct node*)malloc(sizeof(struct node));
n9->data = 800000;
n9->link = NULL;
//n2 뒤에 n9 삽입하기
n9->link=n2.link;
n2.link=n9;
view(&n1);
}
*/
#include <stdio.h>
#include <memory.h>
struct node
{
int data; //data
struct node* link; //다음 노드의 주소
};
struct node* initialize_linked_list()
{
struct node* head =(struct node*)malloc(sizeof(struct node));
head->link=NULL;
return head;
}
void insertnode(struct node* head, int data)
{
struct node* newnode =(struct node*)malloc(sizeof(struct node));
newnode->data=data;
//리스트의 맨 앞에 노드 삽입하기 == head 뒤에 노드 삽입하기
newnode->link=head->link;
head->link=newnode;
}
int searchnode(struct node* head, int data)
{
struct node* s=(struct node*)malloc(sizeof(struct node));
s=head;
while(s!=NULL)
{
if(s->data == data) return 1;
s=s->link;
}
return 0;
}
void view(struct node* h)
{
printf("linked list >> ");
h=h->link;
while(h!=NULL)
{
printf("%d-> ",h->data);
h=h->link;
}
printf("\n");
}
int main()
{
int a, b;
struct node* head = initialize_linked_list();
while(1)
{
printf("1.insert 3. search 4.view >>");
scanf("%d",&a);
switch(a)
{
case 1 : printf("insert data is ");
scanf("%d",&b); insertnode(head,b);
break;
case 2 :
case 3 : printf("search data >>");
scanf("%d",&b);
if(searchnode(head,b)) printf("데이터 있음\n");
else printf("데이터 없음\n");
break;
case 4 : view(head);
break;
default : return 0;
}
}
}