링크드리스트 질문..
모아
질문 제목 : 링크드리스트 코드질문좀할게요첫번째 노드로 삽입하는함수
중간노드로 삽입하는 함수
리스트 노드 삭제 함수
리스트 l에서 x노드탐색함수
이 4개 함수를 제가 만들었는데 컴파일은 되는데 실행하다가
변수 pre가 초기화 되지않고 사용되었다고오류가뜹니다 ㅠㅠ 해결좀부탁드려요
질문 내용 :
#includestdio.h
#includestdlib.h
#includestring.h
typedef struct listnode{
char data[10];
struct listnode* link; //링크필드
}listnode;
typedef struct{
listnode* head;
}linkedlist_h;
linkedlist_h* createlinkedlist_h(void); //초기화하는 함수
void freelinkedlist_h(linkedlist_h*); //메모리해제 함수
void addfirstnode(linkedlist_h*, char*); //첫번째노드에삽입하는 함수
void addmiddlenode(linkedlist_h*,listnode*, char*); //중간노드에 삽입하는 함수
listnode* searchnode(linkedlist_h* l, char* x); //노드탐색 함수
void deletenode(linkedlist_h*); //노드삭제 함수
void printlist(linkedlist_h*); //화면출력 함수
linkedlist_h* createlinkedlist_h(void){
linkedlist_h* l;
l = (linkedlist_h*)malloc(sizeof(linkedlist_h));
l - head = null;
return l;
}
void addfirstnode(linkedlist_h* l, char* x){
listnode* newnode;
newnode = (listnode*)malloc( sizeof(listnode) );
strcpy(newnode-data,x);
newnode-link = l-head;
l-head = newnode;
}
void addmiddlenode(linkedlist_h* l, listnode* pre, char* x){
listnode* newnode;
newnode = (listnode*)malloc( sizeof(listnode) );
strcpy(newnode-data,x);
pre = searchnode(l,월);
if(l-head == null){
l-head = newnode;
newnode-link = null;}
else{
newnode-link = pre-link;
pre-link = newnode;}
}
void deletenode(linkedlist_h* l){
listnode* old, * pre;
pre = searchnode(l,월);
if(l-head == null){
printf(삭제 할 노드가 없습니다.\n);}
else{
old = pre-link;
if(old == null) return;
pre-link = old-link;
}
free(old);
}
listnode* searchnode(linkedlist_h* l, char* x){
listnode* p;
p = l-head;
while(p != null) {
if(p-data == x) return p;
p = p-link;
}
return p;
}
void freelinkedlist_h(linkedlist_h* l){
listnode* p;
while(l-head != null){
p = l-head;
l-head = l-head-link;
free(p);
p=null;
}
}
void printlist(linkedlist_h* l){
listnode* p;
printf(l=();
p = l-head;
while(p != null){
printf(%s,p-data);
p = p-link;
if(p != null){
printf(,);
}
}
printf()\n);
}
int main(){
listnode* pre;
linkedlist_h* l;
l = createlinkedlist_h();
printf(공백리스트 생성하기!\n);
printf(첫번째 노드로 2개의 노드 추가하기!\n);
addfirstnode(l,수);
addfirstnode(l,월);
printlist(l);
printf(중간 노드로 1개의 노드 추가하기!\n);
addmiddlenode(l,pre,화);
printlist(l);
printf(두번째 리스트 노드 삭제하기!\n);
deletenode(l);
printlist(l);
printf(리스트 공간을 해제하여, 공백리스트 상태로 만들기!\n);
freelinkedlist_h(l);
printlist(l);
return 0;
}