수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

다중연결리스트(순환 이중 연결리스트)의 탐색과 삭제문제입니다..

보나

2023.04.01


질문 제목 : 다중 연결리스트(순환 이중 연결 리스트 탐색과 삭제입니다)질문 요약 :다중연결 리스트는 짰는데 탐색을 어떻게 해야할지 궁금합니다.. 탐색을하고 삭제를 해야하지요..질문 내용 :
일단 다중연결리스트는 완성했습니다..
문제는 여기서 n을 입력받아 그걸 탐색하고 그 노드를 삭제하는 것인데요..
탐색을할려면 제가 생각 해본게. count를 하고 그걸 삭제하는건데..아닌가요?
아니면 탐색함수를 하나 만들어야하나요?
탐색함수를 만들어야한다면 이 소스 수정좀 부탁드립니다..아니면 힌트라도!!!!^^많은 관심 부탁드립니다
#include stdio.h
#include stdlib.h
typedef struct
{
int key;
} element;
typedef struct node *node_pointer;
typedef struct node
{
node_pointer llink;
element item;
node_pointer rlink;
};
void dinsert(node_pointer *node, element item) // node의 오른쪽(rlink)로 삽입.
{
node_pointer newnode;
if((*node) == null)
{
fprintf(stderr, node is empty, error\n);
exit(1);
}
newnode = (node_pointer)malloc(sizeof(struct node));
if(newnode == null)
{
fprintf(stderr, memory error!!!\n);
exit(1);
}
newnode-item = item;
newnode-llink = (*node);
newnode-rlink = (*node)-rlink;
(*node)-rlink-llink = newnode;
(*node)-rlink = newnode;
(*node) = newnode;
}
void ddelete(node_pointer node, node_pointer deleted) // 이중 연결 리스트에서 삭제 (노드, 삭제노드)
{
if(node == deleted)
fprintf(stderr, deletion of head node not permitted.\n);
else
{
deleted-llink-rlink = deleted-rlink;
deleted-rlink-llink = deleted-llink;
free(deleted);
}
}
void print_right(node_pointer node)
{
node_pointer temp = node-rlink;
while(temp != node)
{
printf( [%d] , temp-item);
temp = temp-rlink;
}
printf( - complete !!! [right]\n);
}
void print_left(node_pointer node)
{
node_pointer temp = node-llink;
while(temp != node)
{
printf( [%d] , temp-item);
temp = temp-llink;
}
printf( - complete !!! [left]\n);
}
int count_node(node_pointer node) // 노드 갯수 알아내는 함수
{
node_pointer temp = node-llink;
int cnt = 0;
while(temp != node)
{
cnt++;
temp = temp-llink;
}
return cnt;
}
/* coded by i0nucleus */
void main(void)
{
element item;
node_pointer head, start, del_list;
unsigned int i;
head = (node_pointer)malloc(sizeof(struct node));
if(head == null)
{
fprintf(stderr, cannot create the head list\n);
exit(1);
}
item.key = 0;
head-item = item;
head-llink = head-rlink = head; // head 노드 초기화
start = head;
for(i=1; i=10; i++)
{
item.key = i;
dinsert(&start, item);
}

print_right(head);
print_left(head);
i = count_node(head);
printf( count = %d\n, i);
printf(\n delete [2]\n); // 2번째 노드 삭제
del_list = head-rlink-rlink;
ddelete(head, del_list);
print_right(head);
print_left(head);
i = count_node(head);
printf( count = %d\n\n, i);
printf( delete dll\n);
while(i-- 0) ddelete(head, head-rlink); // 이중 리스트 모두 삭제

print_right(head);
print_left(head);
free(head); // 헤드노드 삭제
return;
}

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

번호 제 목 글쓴이 날짜
2698184 간단한 C언어 인데 .. 붕붕 2025-06-14
2698120 -연산자 가 먼지 좀 알려주세요 (1) 낮선검객 2025-06-14
2698091 길찾기문제 질문이요! 노을빛 2025-06-13
2698060 while 문에 대한 질문입니다. (9) 물고기자리 2025-06-13
2698012 2~9가아닌수 아놀드 2025-06-13
2697980 for에 gets함수를 넣으니까 왜 반복이 안되죠 ㅜ (2) 펴라 2025-06-12
2697952 2차배열과 함수문의^^; VanilLa 2025-06-12
2697924 다차원 배열 질문있습니다 두동 2025-06-12
2697893 정올 :: 기초다지기 a9007 배열7 (문제가 이상함 -_-) 흰두루 2025-06-12
2697862 Unable......... 지정된 파일을 찾을 수 없습니다!! (1) Creator 2025-06-11
2697761 그러니까여제말은... (2) 새론 2025-06-10
2697737 정올 문제좀 풀어보신분~ 레오 2025-06-10
2697709 rand함수 질문좀요! (6) 가막새 2025-06-10
2697683 C언어 변수뒤 표시가 이해안되는게 있습니다. 소미 2025-06-10
2697660 껍데기딜 만들고 난후 어느핫키 누르면 코드검색이라도 뜨고 그다음 무반응 해결좀 (2) 움찬 2025-06-09
2697634 c언어로 감성사전 만들기! (1) 도란도란 2025-06-09
2697605 이 함수좀... agine 2025-06-09
2697574 배열 기본적인질문 (3) 민트향 2025-06-09
2697549 배열 초기화 (4) 나리 2025-06-08
2697465 수다님...^^ (2) 가론 2025-06-08
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com