티스토리 뷰
#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;
return;
}
}
void findFB2(int n)
{
struct node* cur = head;
if (head == 0) {
printf("-999");
return;
}
while (1) { //검색
if (cur == 0) {
if (head == 0) { // DLL 이없다. return.
return;
}
printf("-999"); //node 를 찾지 못함.
return;
}
if (cur->data == n) { //찾은경우.
break;
}
cur = cur->next;
}
if (cur->prev == 0) {
printf("-999 "); //앞이 NULL
}
else { //첫번째 앞이 null 이 아닐경우
if (cur->prev->prev == 0) { //두번째 앞이 null일 경우
printf("-999 ");
}
else { // 두번쨰 앞 값이 있을 경우
printf("%d ", cur->prev->prev->data);
}
}
if (cur->next == 0) { //뒤가 NULL
printf("-999");
}
else { // 첫번째 뒤가 NULL 이 아닐 경우
if (cur->next->next == 0) { //두번째 뒤가 null일 경우
printf("-999");
}
else { //두번째 뒤 값이 있을 경우
printf("%d", cur->next->next->data);
}
}
return;
}
void showDLL()
{
struct node* cur = head;
if (head == 0) {
return;
}
while (cur != 0) {
printf("%d ", cur->data);
cur = cur->next;
}
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);
findFB2(data1);
}
'IT > 자료 구조' 카테고리의 다른 글
[데이터구조]스택 구조 기본 코드/초간단 이해하기! (0) | 2020.04.10 |
---|---|
[데이터 구조] DLL 응용문제/데이터 빈도 출력 (0) | 2020.04.09 |
[데이터 구조]DLL/데이터 검색하기/검색 알고리즘 (0) | 2020.04.07 |
[데이터구조] DLL에 데이터 삽입/초간단 정리!! (0) | 2020.04.06 |
[데이터구조] DLL에서 데이터 삭제/ 초간단 정리!! (0) | 2020.04.05 |
댓글