output함수에서..ㅡㅡ 흠.. 뭐가 틀렸길래... 출력이 안되는걸까요..ㅠㅠ
벼리
#include stdio.h
#include windows.h
#include malloc.h
#include conio.h
//---- 노드 구조체
typedef struct _node
{
int Data;
struct _node *next;
struct _node *prev;
}Node;
//---- 노드의 헤더
Node *head;
//---- 입 력
void fnInput()
{
Node *newnode , *cur;
newnode = (Node*)malloc( sizeof(Node) );
newnode-next = NULL;
printf(정수 입력 : );
scanf(%d , &newnode-Data );
if( head == NULL )
{
head = newnode;
}
else
{
for( cur = head ; cur-next != NULL ; cur = cur-next ) ;
cur-next = newnode;
newnode-prev = head;
}
}
void del()
{
Node *temp;
if(head!=NULL)
{
temp = head;
head = head-next;
delete temp; // root가 삭제할 노드 다음 노드를 가리키고 있음으로
// 리스트를 잃어버리지 않고 맨 앞의 노드를 삭제함.
}
}
void del2()
{
Node *prev=NULL;
Node *temp=head; // 노드 탐색에서 현재 선택된 노드를 가리키는 포인터
if(head!=NULL) // 삭제할 노드가 없는 경우가 아니라면
{
while(temp-next!=NULL) // 현재 노드의 다음 노드가 존재하면
{
prev = temp; // 현재 노드가 이전 노드가 되고
temp = temp-next; // 다음 노드가 현재의 노드가 된다.
}
/* while문이 끝나면 현재 노드의 다음 노드가 존재하지 않는 경우
즉, temp가 가리키는 노드가 마지막 노드 */
prev-next = NULL; // 마지막 노드의 바로 이전 노드가 마지막 노드가 되어야 함.
delete temp; // 마지막 노드는 삭제.
}
}
//----- 출 력
void fnOutput()
{
int i=1;
if( head == NULL )
{
printf(출력할 데이터가 없습니다 \n ) ;
return;
}
for(Node *cur = head ; cur != NULL ; cur = cur-next)
{
printf(-----------------------------[%d]\n , i++ );
printf(Node의 주소 : %d \n , cur ) ;
printf(Data : %d \n , cur-Data ) ;
printf(Node-next의 주소 : %d \n , cur-next ) ;
}
}
void output()
{
for(Node *cur = head ; cur != NULL ; cur = cur-next);
{
printf(Data : %d \n , cur-Data ) ;
for(Node *cur = NULL ; cur == head ; cur = cur-prev)
{
printf(Data : %d \n , cur-Data ) ;
}
}
}
//----- 메 뉴
void fnMene()
{
int choice;
while(1)
{
system(cls);
printf([1]입력 [2]출력 [3]FIFO [4]LIFO [5]종료 \n);
printf(선택 : [ ]\b\b\b); scanf(%d , &choice ) ;
switch( choice )
{
case 1 : fnInput(); break; // 입력
case 2 : output(); break; // 출력
case 3 : del(); break;
case 4 : del2(); break;
case 5 : return; // 종료
default : printf(choice Error!\n);
}
system(pause);
}
}
void fnExit()
{
Node *cur = head;
if( head == NULL )
{
return;
}
else
{
while( cur != NULL )
{
//---- 동적 할당 해제 ...
head= cur-next;
free(cur);
cur = NULL ;
cur = head;
}
}
}
//---- MAIN
void main()
{
fnMene(); // 메 뉴
fnExit(); // 종료 & 동적 할당 해제
}----------------------------------------------------------------------------------------------------
cur=head
cur-next = newnode
newnode-perv=head
연결하고...
끝으로 가서..
perv하나씩 주면서 앞으로 떙기면서 출력하려고 하는데....
-_-..;; 오류 뜨네요... 끝에가서... 앞으로 한칸씩 땡기는거... 다 잡은거 같은데...
입력부분에 perv주고, 출력부분에서 perv줘서 하칸씩 땡겨서 역출력 하는건데...
fnoutput같은 경우는 제데로 출력이 잘되는거 같은데 역순으로 출력하려니...ㅠㅠㅠ
..ㅡㅡ 4일째 노가다 중인데 풀리는게 없습니다....!!!!!!!
-
로와
계속 NULL을 참조해서 문제가 발생합니다.. for문 사용법을 다시 확인해 보세요... 그리고 포인터에 NULL이 들어가면 어떻게 되는지도요... 디버깅 해보시면 쉽게 아실 수 있을꺼예요..
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2698909 | 서비스 요청 고객 관리 프로그램 짜는것좀 도와주세요ㅜㅜ (4) | 궁수자리 | 2025-06-21 |
2698882 | 프로그래밍좀 짜주세요 (3) | 황예 | 2025-06-21 |
2698855 | 카프-라빈 알고리즘 코딩 분석좀 도와주세요.. | 꽃봄 | 2025-06-20 |
2698829 | 학점계산기 (7) | MyWay | 2025-06-20 |
2698782 | 기초적인 함수 질문이요ㅠㅠㅠㅠ | 내담 | 2025-06-20 |
2698749 | 프로그램 짜던 도중 패닉입니다...ㅜ | 파랑 | 2025-06-19 |
2698719 | 조건부컴파일 질문입니다.~ (2) | 큐트 | 2025-06-19 |
2698693 | 재귀 함수 에러 | 바닐라 | 2025-06-19 |
2698673 | 고민이있는데 들어좀주세요!! (1) | 초코맛캔디 | 2025-06-19 |
2698644 | 1부터 n까지의 합을 구하는데 엄청긴숫자의 합을 구할때는 어떻게 해야하나요? (4) | 슬우 | 2025-06-18 |
2698616 | 다른 함수로 안넘어갑니다..;;; | 도1도캣 | 2025-06-18 |
2698587 | 배열하다 막혀서... (3) | WhiteCat | 2025-06-18 |
2698559 | 문자열을 비우는방법 (2) | 하늘 | 2025-06-18 |
2698528 | 착하고 친절한 선생씌구해염~ㅋㅋ (4) | 옆집언니야 | 2025-06-17 |
2698502 | 자료구조 큐 | 캔서 | 2025-06-17 |
2698477 | 실행화면 배경문의요 | 선아 | 2025-06-17 |
2698430 | 변수의 값이 저장이 않되네요;; (4) | 피네 | 2025-06-16 |
2698404 | C#을 배울려고 하는데 C나 C++을 알아야 하나요 ?? (1) | 신당 | 2025-06-16 |
2698342 | 프로그램 질문점녀 (4) | 데빌의눈물 | 2025-06-16 |
2698318 | 파일 입출력 질문입니다~ (2) | 꽃 | 2025-06-15 |