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이 들어가면 어떻게 되는지도요... 디버깅 해보시면 쉽게 아실 수 있을꺼예요..
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |
2691650 | 반복문 | 돋가이 | 2025-04-15 |
2691618 | 링크드리스트 개념 질문이예요 (3) | 맨마루 | 2025-04-15 |
2691592 | 동적할당 이용 배열선언 질문입니다.ㅠㅠ (3) | 허리달 | 2025-04-15 |
2691542 | /=의 용도를 알려주세요 ㅠㅠ! (2) | 아라 | 2025-04-14 |
2691510 | sizeof 연산자 질문입니다 (2) | 종달 | 2025-04-14 |
2691483 | 파일 오픈시 에러 질문드립니다. (2) | 호습다 | 2025-04-14 |
2691450 | [visual c++ 툴]기초 질문 (3) | 해긴 | 2025-04-13 |