연결리스트 소스가 비주얼C에선 잘되고 터보c에선 안됩니다 ㅠ
달달한캔디
질문 제목 : 연결리스트 소스가 어떤컴퓨터에선 잘되고 어떤 컴퓨터에선 안되는데 왜그러는건지좀 알려주세요.. ㅠ질문 요약 :컴퓨터도 다르고 저는 비주얼 6.0 c++으로햇고 교수님 컴퓨터에서는 터보c++ 으로했는데 0입력하면 잘 정지 되는데 교수님 컴퓨터에서는 안되요...질문 내용 :
소스는
#includestdio.h
#includestdlib.htypedef struct listnode{
long data;
struct listnode *link;
}listnode;typedef struct listheader{
listnode *head;
listnode *tail;
int length;
}listheader;void init(listheader *plist)
{ plist-head = plist-tail = null;
plist-length = 0;
}void insert_node(listheader *plist, long data)
{listnode *temp = (listnode *)malloc(sizeof(listnode));
if(temp == null)
exit(1);
temp-data = data;
temp-link = null;
listnode *p;
listnode *q;if (plist-tail == null)
{
plist-head = plist-tail = temp;
(plist-length)++;
}
else
{p = plist-head;while(1)
{
if(temp-data p-data)
{
if(p-link==null)
{
p-link = temp;
temp-link = null;
plist-tail = temp;
(plist-length)++;
break;
}
else
{
q = p;
p = p-link;
}
}
else
{
if(temp-data plist-head-data)
{
temp-link = plist-head;
plist-head = temp;
(plist-length)++;
break;
}
else
{
q-link = temp;
temp-link = p;
(plist-length)++;
break;
}
}
}
}
}
void remove_node(listheader *plist, long lo)
{int i=1;
listnode *re, *lre;
re = plist-head;while(1)
{
if(plist-head-data == lo)
{
plist-head = plist-head-link;
free(re);
(plist-length)--;
break;
}
else
{lre = re;
re = re-link;
i++;}
if(re == null)
{printf(그런 데이터가 존재하지 않습니다.\n);
break;
}
if(re-data == lo)
{
lre-link = re-link;
free(re);
(plist-length)--;
break;
}
else
{
lre = re;
re = re-link;
i++;
}}
}
void reverse_node(listheader *plist)
{
listnode *p, *q, *r;
if(plist-length == 3)
{plist-tail-link = plist-head-link;
plist-head-link = null;
plist-tail-link-link = plist-head;
plist-head = plist-tail;
plist-tail = plist-head-link-link;
}
else if(plist-length == 2)
{plist-head-link = null;
plist-tail-link = plist-head;
plist-head = plist-tail;
plist-tail = plist-head-link;
}
else
{
p = plist-head-link;
q = p-link;
&r = q-link;
p-link = plist-head;
plist-head-link = null;
while(1)
{q-link = p;
p = r-link;
r-link = q;
if(p == null)
{plist-tail = plist-head;
plist-head = r;
break;}
q = p-link;
if(q == null)
{
p-link = r;
plist-tail = plist-head;
plist-head = p;
break;
}
p-link = r;
r = q-link;
if(r == null)
{q-link = p;
plist-tail = plist-head;
plist-head = q;
break;
}
}
}
}
void print_data(listheader *plist)
{
listnode *t;
t = plist-head;
while(t != null)
{
printf(출력 값 : %d\n,t-data);
t = t-link;
}
printf(총 노드 수 : %d\n, plist-length);
}
void main()
{
int con;
long a, d;
listheader list1;
init(&list1);
printf(list1에 들어갈 값을 입력 하세요(0입력시 종료)\n);
while(1)
{
scanf(%d,&a);
if(a==0)
break;
insert_node(&list1, a);
}
while(1)
{printf(옵션 1. 출력 / 2. 뒤집기 / 3. 삭제 / 4. 프로그램 종료 \n);
scanf(%d,&con);
if(con == 1)
{printf(list1출력\n);
print_data(&list1);
}
else if(con == 2)
{reverse_node(&list1);
printf(\nlist1 뒤집기완료\n);}
else if(con == 3)
{printf(\n 삭제할 데이터를 입력하세요\n);
scanf(%d,&d);remove_node(&list1, d);
}
else if(con == 4)
exit(1);
else
printf(그런 옵션 없습니다.);
}
}입니다.왜 그런지좀알려주세요.. ㅠㅠ 제꺼는 0입력하면 잘종료되는데 교수님컴퓨터에서는 안되네요... ㅠㅠ