연결리스트 병합 및 오름차순 정렬 질문드립니다
송아리
질문 제목 : 연결리스트 2개를 1개로 병합 후 오름차순 정렬질문 요약 :컴파일 성공까지하고 실행을하면 p와 q의 연결리스트를 입력받은 후 프로그램이 종료되는데
어디가 잘못 됐는지 잘 모르겠네요 ; ㅠ 질문 내용 :
#include stdio.h
#include stdlib.h
#define n 5
#define m 5
typedef struct pnode{
int data;
struct pnode *next;
}node;
node *insert(node *p, int num){
node *temp, *curr, *prev;
curr = p;
prev = null;
if(p==null){
p=(node *)malloc(sizeof(node));
if(p==null)
exit(0);
p-data = num;
p-next = null;
}
else{
if(curr-data num){
temp = (node *)malloc(sizeof(node));
temp-data = num;
temp-next = curr;
p = temp;
return p;
}
while (curr-data num){
if(curr-next == null){
temp = (node *)malloc(sizeof(node));
temp-data = num;
temp-next = null;
curr-next = temp;
return p;
}
prev = curr;
curr = curr-next;
}
temp = (node *)malloc(sizeof(node));
temp-data = num;
temp-next = temp;
prev-next = temp;
return p;
}
}
void display(node *head){
node *p = head;
while ( p != null){
printf(%d-, p-data);
p = p-next;
}
printf(\n);
}
node *merge(node *p, node *q){
node *r = null, *temp;
if(p == null)
r = q;
else if(q == null)
r = p;
else{
if(p-data q-data){
r = p;
temp = p;
p = p-next;
temp-next = null;
}
else if(p-data == q-data){
r = p;
temp = p;
p = p-next;
q = q-next;
temp-next = null;
}
else{
r = q;
temp = q;
q = q-next;
temp-next = null;
}
while((p != null) && (q != null)){
if(p-data q-data){
temp-next = p;
p = p-next;
temp = temp-next;
temp-next = null;
}
else if(p-data == q-data){
temp-next = p;
p = p-next;
q = q-next;
temp = temp-next;
temp-next = null;
}
else{
temp-next = q;
q = q-next;
temp = temp-next;
temp-next = null;
}
}
if(p != null)
temp-next = p;
if(q != null)
temp-next = q;
}
display(p);
return r;
}
int main(){
int i;
int number;
node *p = null;
node *q = null;
printf(리스트 p에 입력할 데이터(정수) : %d\n, n);
for(i=0; in; i++){
scanf(%d, &number);
insert(p,number);
}
printf(리스트 q에 입력할 데이터(정수) : %d\n, m);
for(i=0; im; i++){
scanf(%d, &number);
insert(p,number);
}
merge(p,q);
return 0;
}