단순연결리스트...
큰돛
#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 addlastnode(linkedlist_h*, char*);
void reverse(linkedlist_h*);
void deletelastnode(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 addlastnode(linkedlist_h*l, char*x){
listnode* newnode;
listnode* p;
newnode= (listnode*)malloc(sizeof(listnode));
strcpy(newnode-data,x);
newnode-link= null;
if (l-head==null){
l-head=newnode;
return;
}
p= l-head;
while (p-link !=null){
p=p-link;
}
p-link=newnode;
}
void deletelastnode(linkedlist_h*l){
listnode* previous;
listnode* current;
if (l-head == null) return;
if (l-head -link == null) {
free(l-head);
l-head = null;
return;
}
else{
previous = l-head;
current = l-head-link;
while(current-link !=null){
previous = current;
current = current-link;
}
free(current);
previous-link=null;
}
}
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(){
linkedlist_h*l;
l=createlinkedlist_h();
printf((1) 공백리스트 생성하기! \n);
printlist(l); getchar();
printf((2) 리스트에 3개의 노드 추가하기! \n);
addlastnode(l, 월);
addlastnode(l, 수);
addlastnode(l, 금);
printlist(l); getchar();
printf((3) 리스트 마지막에 노드 한개 추가하기! \n);
addlastnode(l, 일);
printlist(l); getchar();
printf((4) 마지막 노드 삭제하기! \n);
deletelastnode(l);
printlist(l); getchar();
printf((5) 리스트 원소를 역순으로 변환하기! \n);
reverse(l);
printlist(l); getchar();
printf((6) 리스트 공간을 해제하여, 공백 리스트 상태로 만들기! \n);
freelinkedlist_h(l);
printlist(l);
getchar();
return 0;
}
컴파일러로는 에러가 안뜨는데... 실행을 하려니까 에러가 나네요...이유좀 알려주세요 ㅠㅠ
주석도 좀 달아주시면 좋겠어요...;;