(c언어) 이중 연결 리스트의 원소 삭제 알고리즘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | #include<stdio.h> #include<stdlib.h> #include<string.h> //리스트 구조체 선언 struct Dnode { struct Dnode *llink; char data[5]; struct Dnode *rlink; }; struct DoubleList { struct Dnode *dNode; }; struct DoubleList DL = { NULL }; void deleteNode(DoubleList DL, Dnode *old) { old->llink->rlink = old->rlink; old->rlink->llink = old->llink; free(old); } void main() { struct Dnode *dn, *dn1, *dn2; dn = (Dnode*)malloc(sizeof(Dnode)); dn1 = (Dnode*)malloc(sizeof(Dnode)); dn2 = (Dnode*)malloc(sizeof(Dnode)); strcpy(dn->data, "apple"); strcpy(dn1->data, "banana"); strcpy(dn2->data, "orange"); dn->llink = NULL; dn->rlink = dn1; dn1->llink = dn; dn1->rlink = dn2; dn2->llink = dn1; dn2->rlink = NULL; DL.dNode = dn; printf("------Before------\n"); struct Dnode *Temp = DL.dNode; int cnt = 0; while (Temp != NULL) { printf("%d : %s\n", cnt++, Temp->data); Temp = Temp->rlink; } deleteNode(DL, dn1); printf("------after------\n"); Temp = DL.dNode; cnt = 0; while (Temp != NULL) { printf("%d : %s\n", cnt++, Temp->data); Temp = Temp->rlink; } return; } | cs |
출력결과
[출처] (c언어) 이중 연결 리스트의 원소 삭제 알고리즘|작성자 길가다주은노트북
'프로그래밍 > C' 카테고리의 다른 글
(C언어) 큐를 이용한 서비스 요청 고객 관리 프로그램 (0) | 2016.07.09 |
---|---|
(C언어) 후위표기 수식의 연산 프로그램 (0) | 2016.07.09 |
(C언어) 원형 연결 리스트의 첫 번째 노드 삽입 알고리즘 (0) | 2016.07.09 |
(C언어) 연결형 리스트 탐색 알고리즘 구현 (0) | 2016.07.09 |
(C언어) 함수, 배열, 포인터, 구조체 (0) | 2016.07.09 |