Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct node
- {
- struct node * Llink;
- int data;
- struct node * Rlink;
- } DLinklist;
- void * Getnode()
- {
- DLinklist * tmp;
- tmp = (DLinklist*)malloc(sizeof(DLinklist));
- tmp->Llink = NULL;
- tmp->Rlink = NULL;
- return tmp;
- }
- void Insert(DLinklist**head, int data)
- {
- if (!*head)
- {
- *head = Getnode();
- (*head)->data = data;
- return;
- }
- Insert(&(*head)->Rlink, data);
- (*head)->Rlink->Llink = *head;
- }
- void Output(DLinklist**head)
- {
- if (*head)
- {
- printf("%d ", (*head)->data);
- Output(&(*head)->Rlink);
- }
- }
- void Add(DLinklist**head, int data1, int data2)
- {
- DLinklist * tmp=NULL;
- if ((*head)->data == data1)
- {
- Insert(&tmp, data2);
- tmp->Llink = *head;
- tmp->Rlink = (*head)->Rlink;
- (*head)->Rlink->Llink = tmp;
- (*head)->Rlink = tmp;
- return;
- }
- else
- Add(&(*head)->Rlink, data1, data2);
- }
- void Delete(DLinklist **head, int data)
- {
- DLinklist *tmp = NULL;
- if ((*head)->data == data)
- {
- tmp = *head;
- if ((*head)->Rlink == NULL) // 마지막 노드
- *head = NULL;
- else
- {
- *head = (*head)->Rlink;
- (*head)->Llink = (*head)->Llink->Llink;
- }
- free(tmp);
- }
- else
- Delete(&(*head)->Rlink, data);
- }
- int main()
- {
- DLinklist * head = NULL;
- Insert(&head, 10);
- Insert(&head, 20);
- Insert(&head, 30);
- //Add(&head, 10, 15);
- Output(&head);
- Delete(&head, 20);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement