c 링크드리스트 linkedlist 관련...
곰돌츼
#include stdio.h
#include stdlib.h
struct pnode{
char data;
struct pnode *next;
};
typedef struct pnode NODE;
NODE *push(NODE *,char);
NODE *save_top=NULL;
NODE *push(NODE *p,char value)
{
NODE *temp;
temp=(NODE *)malloc(sizeof(NODE));
if(temp==NULL)
{
printf(없어용 \n);
exit(0);
}
temp-data = value;
temp-next = p;
p= temp;
return(p);
}NODE *pop(NODE *p)
{
NODE *temp;
if(p==NULL)
{
printf(스택 비었어요 \n);
exit(0);
}
save_top=push(p,p-data);
temp = p;
p = p-next;
free(temp);
return(p);
}void prtlist(NODE *p)
{
if(p)
{
printf(top -);
while(p-next != NULL){
printf( %c -,p-data);
p=p-next;
}
printf(%c \n,p-data);
}
else
{
printf(스텍이 비어있습니다\n);
}
}void main()
{
NODE *top=NULL;
char word;
int q1;while(1)
{
printf(1. push2. pop3. print list4. print pop list);
scanf( %d,&q1);
switch(q1)
{
case 1:
printf(입력할 문자 : );
scanf( %c,&word);
top=push(top,word);
break;
case 2:
top=pop(top);
break;
case 3:
prtlist(top);
break;
case 4:
prtlist(save_top);
break;
}
}
}링크드리스트로 구현한 스텍관련 프로그램입니다
스택으로 집어넣어서 그것을 출력하는건 문제가 안되는데
pop하는 문자들을 pop한 순서대로 다시 출력을 하게 하려고 하는중이거든요
NODE pop 에서 temp 를 free 시키면 pop 한녀석들을 출력할때 에러가 뜨고요
그렇다고 temp 를 free 안시킨다고 해도 pop 순서대로 출력할때 제대로 나오는것도 아니고요..
원래코드에서 save_pop 이라는 새로운 노드들을 생성해서 다시 구현한 스택들에 pop 한 문자들을
순서대로 출력하게 하려고 하는중이었습니다. 여기서 코드들 더이상 구제할수 없다면
pop 한 순서대로 출력하게 할수 있는 쉬운 liked list 의 간단한 소스 구현을 좀 알려주세요 ㅜ_ㅜ
제 머리로는 한계군요 ㅇㅅㅇ/
뭐 계속 잡아보고 잇겟지만(학교도 늦게가니 ㅋ) 좀 돠주십쇼 ~