연결리스트 질문요
진주
질문 제목 :
코드 수정좀 해주세요.
insert_node 부분이 잘못됐나봐요...
질문 내용 : #includestdio.h
#includestdlib.h
typedef struct node
{
int data;
node *next;
}node;
node *Head;
node *Tail;
void set_node()
{
Head = (node*)malloc(sizeof(node));
Tail = (node*)malloc(sizeof(node));
Head-next=Tail;
Tail-next=Tail;
}
node* insert_node(node *now,int data)
{
node *new_node;
new_node=(node*)malloc(sizeof(node));
new_node-data=data;
new_node-next=now-next;
now-next=new_node;
return new_node;
}
int delete_node(node *Target) //Target 다음노드를 삭제
{
node *temp;
if(Target-next == Tail)
return 0;
temp = Target-next;
Target-next=Target-next-next;
free(temp);
return 1;
}
node* find(int data) // data값을 가지는 노드 검색. 중복시 제일 먼저 나온 노드를 리턴
{
node *s;
s = Head-next;
while(s-data!=data && s-next!=Tail)
s=s-next;
return s;
}
void main()
{
int key,i;
node *now_node;
now_node = Head;
set_node();
printf(------노드에 넣을 값을 입력------\n);
printf( 그만 입력 하기를 원할 시 0입력 \n);
while(1)
{
printf(data : );
scanf(%d,&key);
if(key==0) break;
now_node=insert_node(now_node,key);
}
printf(-------찾을 데이터 입력-------\n);
printf( 그만 입력 하기를 원할 시 0입력 \n);
while(1)
{
printf(data : );
scanf(%d,&key);
if(key==0) break;
if(Tail==find(key))
printf(그런노드없음\n);
else printf(찾았다.\n);
}
printf(몇번 째 노드를 삭제할 건지 입력 : );
scanf(%d,&key);
now_node = Head;
for(i=1;i=key;i++) // 1부터 시작해서 key값이 되기 전까지 돈다.
{
now_node=now_node-next;
}
delete_node(now_node);
}