티스토리 뷰
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node *next;
struct node *prev;
};
struct node* head = 0;
void addToDLL(int n)
{
struct node* cur;
cur = (struct node*)malloc(sizeof(struct node));
cur->data = n;
cur->next = 0;
cur->prev = 0;
if (head == 0) {
head = cur;
return;
}
{ //끝을 찾는다
struct node* temp = head;
while (temp->next != 0) {
temp = temp->next;
}
temp->next = cur;
cur->prev = temp;
}
}
void insertToDLL(int a, int b)
{
struct node *cur = head;
while (1) { //검색
if (cur == 0) {
if (head == 0) { //검색을못했을땐 break dll이없을땐 return
return;
}
break;
}
if (cur->data == a) {
break;
}
cur = cur->next;
}
if (cur == 0) {
return;
}
else {
struct node* newb;
newb = (struct node*)malloc(sizeof(struct node));
newb->data = b;
newb->next = 0;
newb->prev = 0;
if (cur->next == 0) {
newb->prev = cur;
cur->next = newb;
return;
}
else {
newb->next = cur->next;
cur->next->prev = newb;
newb->prev = cur;
cur->next = newb;
return;
}
}
return;
}
void showDLL()
{
struct node* cur = head;
if (head == 0) {
return;
}
while (cur != 0) {
printf("%d ", cur->data);
cur = cur->next;
}
return;
}
void showDLL2()
{
struct node *cur = head;
if (head == 0) {
return;
}
while (cur->next != 0) {
cur = cur->next;
}
while (cur != 0) {
printf("%d ", cur->data);
cur = cur->prev;
}
return;
}
int main(void)
{
int num, data1, data2, i;
scanf("%d", &num);
for (i = 0; i < num; i++) {
scanf("%d", &data1);
addToDLL(data1);
}
scanf("%d", &data1);
scanf("%d", &data2);
insertToDLL(data1, data2);
showDLL2();
}
'IT > 자료 구조' 카테고리의 다른 글
[데이터 구조]DLL 응용문제/데이터검색/알고리즘 (0) | 2020.04.08 |
---|---|
[데이터 구조]DLL/데이터 검색하기/검색 알고리즘 (0) | 2020.04.07 |
[데이터구조] DLL에서 데이터 삭제/ 초간단 정리!! (0) | 2020.04.05 |
[데이터구조] DLL생성하기/초간단 정리! (0) | 2020.04.03 |
[데이터구조] SLL간의 같은 숫자 갯수 세기/ 초간단 정리!! /SLL 응용문제 (0) | 2020.04.01 |
댓글