흠...-_- 찾을수 없는 오류의 늪...에 빠져..역출력 링크드 리스트..
황예
#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;
Node *newnode;
//---- 입 력
void fnInput()
{
Node *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 output()
{
for(Node *cur = head ; cur != NULL ; cur = cur-next);
{
for(cur = cur-prev; cur == head ; cur = cur-prev)
{
printf(Data : %d \n , *cur) ;
}
}
}
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 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(); // 종료 & 동적 할당 해제
}
ㅡㅡ... 답이 없는...걸 자꾸 찾고있는듯한 느낌이 드네요..
일주일간..ㅡㅡ 머리 쓰고 별짓 다 한것 같은데...ㅡㅡ...
재귀함수도 써보고 스텍도 써볼려구해보고...ㅡㅡ 그런데 결과는...OTL...
결국 next 반대 prev를 만들어 돌릴려구했더니...쩝.. 오류..오류.. 오류...
이제..ㅡㅡ..이 고비를 좀 넘겨야 그 다음이 보일텐데.... 참.. 힘듭니다..
-
보미
눈에 뜨이는 두개의 함수만 고쳐봤습니다.
다른 부분에 오류가 있는지도 모르니 한번 참고해 보세요... -
목화
void fnInput()
{
\tNode *cur;
\tnewnode = (Node*)malloc( sizeof(Node) );
\tnewnode-next = NULL;
\tprintf(\정수 입력 : \ );
\tscanf(\%d\ , &newnode-Data );
\tif( head == NULL )
\t{
\t\thead = newnode;
\t\tnewnode-prev = NULL;\t//처음 노드의 prev포인터를 NULL로 설정
\t} -
눈내리던날
그렇게 바꾸면..ㅡㅡ.. null을 가르켜서.. 오류...=ㅇ=v 별짓 다 해봤답니다 ㅋ
-
별햇님
printf(\Data : %d \\n\ , *cur);
이게 범상찮군요.
printf(\Data : %d \\n\ , cur-Data);
라고 하셔야할 듯 한데. -
달
tail도 하나 만들어봤는데..ㅡㅡ;; newnode-DATA 이런식으로 데이터가 들어가서 그런지..;;
-_-... 오류... 떳었습니다. -
맛깔손
global variable 에 *head 처럼 *tail 도 하나 만드시면 편하게 하실것 같습니다 ^^;