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이 들어가면 어떻게 되는지도요... 디버깅 해보시면 쉽게 아실 수 있을꺼예요..
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2676092 | C언어 책 (2) | 아서 | 2024-11-24 |
2676065 | 웹사이트 또는 메신저 등에서 원하는 텍스트를 검사하는방법?? (1) | 모든 | 2024-11-23 |
2676033 | 배열 기초연습중 발생하는 에러 ㅠㅜ... | Creative | 2024-11-23 |
2676005 | keybd_event 게임 제어 | 영글 | 2024-11-23 |
2675900 | 진짜기본적인질문 | 글길 | 2024-11-22 |
2675845 | 수정좀해주세요ㅠㅠㅠ | 해골 | 2024-11-21 |
2675797 | 병합 정렬 소스 코드 질문입니다. (2) | 도래솔 | 2024-11-21 |
2675771 | 큐의 활용이 정확히 어떻게 되죠?? | 해긴 | 2024-11-21 |
2675745 | 도서관리 프로그램 질문이요 | 도리도리 | 2024-11-20 |
2675717 | 2진수로 변환하는것! (3) | 동생몬 | 2024-11-20 |
2675599 | for문 짝수 출력하는 법 (5) | 널위해 | 2024-11-19 |
2675575 | Linux 게시판이 없어서.. | 첫삥 | 2024-11-19 |
2675545 | 구조체 이용할 때 함수에 자료 넘겨주는 것은 어떻게 해야 하나요? | 아연 | 2024-11-19 |
2675518 | 사각형 가로로 어떻게 반복해서 만드는지좀.. 내용 | 신당 | 2024-11-18 |
2675491 | !느낌표를 입력하는것은 어떻게합니까~~?ㅠㅠ (5) | 사지타리우스 | 2024-11-18 |
2675411 | 파일입출력으로 받아온 파일의 중복문자열을 제거한 뒤 파일출력 | 앨버트 | 2024-11-17 |
2675385 | 링크드리스트 주소록 질문드립니다. (1) | 겨루 | 2024-11-17 |
2675356 | 2진수를 10진수로 바꾸려고 하는데 막히네요.. | 풀잎 | 2024-11-17 |
2675297 | Prity 비트 발생기 | 한란 | 2024-11-16 |
2675249 | C책 좀 추천해 주세요 (2) | 딸기우유 | 2024-11-16 |