/*
#include <stdio.h>
#include <stdlib.h>
typedef struct _node
{
int data;
struct _node* link;
}Node;
void view(Node* head)
{
Node *p=head->link; // head
printf("head-> ");
if(p==NULL) return ;
while(p!= NULL)
{
printf("%d-> ",p-> data);
p=p->link;
}
printf("\n\n");
}
void insertNode(Node* head,int idata)
{
Node * newNode = (Node*)malloc(sizeof(Node));
newNode->data=idata;
newNode->link = head->link;
head->link=newNode;
}
void deleteNode(Node* head)
{
Node* tmp;
if(head->link==NULL)
{
printf("List is empty\n");
return ;
}
tmp=head->link->link;
free(head->link);
head->link = tmp;
}
Node* search(Node* head,int k)
{
//k를 가진 ㄷ데이터가 있는가?
Node *p= head->link;
while(p!=NULL)
{
if(p->data==k){
printf("Search" );
return p;
}
p=p->link;
}
printf("None Existing\n");
return NULL;
}
int main()
{
Node* head = (Node*)malloc(sizeof(Node));
head->link=NULL;
printf("after initialize\n"); view(head);
insertNode(head,3);
printf("after insert\n"); view(head);
insertNode(head,4);
printf("after insert\n"); view(head);
insertNode(head,5);
printf("after insert\n"); view(head);
deleteNode(head);
printf("after delete\n"); view(head);
deleteNode(head);
printf("after delete\n"); view(head);
putchar('\n');
search(head,4);
return 0;
}
*/
//Double Linked List
//Insert, Delete, Search, search and del, search and insert
#include <stdio.h>
#include <stdlib.h>
typedef struct _node
{
int data;
struct _node* rlink;
struct _node* llink;
}DNode;
//prev next
void view(DNode* head)
{
DNode *p=head->rlink; // head의 오른쪽
printf("head-> ");
if(p==NULL) return ;
while(p!= NULL)
{
printf("%d-> ",p-> data);
p=p->rlink;
}
printf("\n\n");
}
void insertDNode(DNode* head,int idata)//
{
DNode * newNode = (DNode*)malloc(sizeof(DNode));
newNode->data=idata;
//newNode->link = head->link;
//head->link=newNode;
}
/*
void deleteDNode(DNode* head)//
{
DNode* tmp;
if(head->rlink==NULL)
{
printf("List is empty\n");
return ;
}
//tmp=head->link->link;
//free(head->link);
//head->link = tmp;
}
}
DNode* search(DNode* head,int k)//
{
//k를 가진 데이터가 있는가?
DNode *p= head->link;
while(p!=NULL)
{
if(p->data==k){
printf("Search" );
return p;
}
p=p->link;
}
printf("None Existing\n");
return NULL;
}
void deletionNode(DNode* head,int k)//
{
DNode *tmp;
tmp=search(head,k);
if(tmp!=NULL){
//
}
}
*/
int main()
{
DNode* head = (DNode*)malloc(sizeof(DNode));
head->rlink=NULL;
printf("after initialize\n"); view(head);
//
// insertDNode(head,3);
// printf("after insert\n"); view(head);
// insertDNode(head,4);
// printf("after insert\n"); view(head);
// insertDNode(head,5);
// printf("after insert\n"); view(head);
//
// deleteDNode(head);
// printf("after delete\n"); view(head);
// deleteDNode(head);
// printf("after delete\n"); view(head);
//
//
// Dsearch(head,4); //k값을 가진 노드를 찾아서 반환
//
// deletionNode(head,k); //k값을 가진 노드를 찾아서 제거
return 0;
}
/*n1.data=1;
n2.data=2;
n3.data=3;
n4.data=4;
head.link=&n1;
n1.link=&n2;
n2.link=&n3;
n3.link=&n4;
n4.link=NULL;
view(&head);
//insert after n2
// newNode.data=5;
// newNode.link=n2.link;
// n2.link=&newNode;
insertNode(5);
view(&head);
//delete
//n2.link= newNode.link;
//view(&head);
// free(newNode1);
*/



