본문 바로가기

Program Language/자료구조

링크드리스트 코드

#include "list.h"
#include <stdio.h>
List *head, *tail;

main(){
 List *find;
 init_list();// 자료구조 초기화
 insert_list(3);
 insert_list(7);
 print_list();
 delete_list();
 print_list();
 
 find=find_list(3);

 if(find !=NULL)
  puts("찾음");
 else
  puts("못찾음");

 
 ordered_list(1);
 print_list();
}

 

------------------------------------------------------------------------------------

 

#include "list.h"
#include <stdio.h>
List *head,*tail;
void init_list(void){
 head=(List *)malloc(sizeof(List));
 tail=(List *)malloc(sizeof(List));
 head->next=tail;
 tail->next=tail;
}

void insert_list(int key){
 List *nww;
 nww=(List *)malloc(sizeof(List));
 nww->key=key;
 nww->next=head->next;
 head->next=nww;
}

void print_list(void){
 List *view;
 view=head->next;

 while(view!=tail){
  printf("%d ",view->key);
  view=view->next;
 } 
 puts("");
}

void delete_list(void){
 List *kill;
 kill=head->next;
 head->next=kill->next;
 free(kill);
}

// 찾은 노드의 주소를 리턴하는 find_list 함수
// 못찾을 경우 NULL을 리턴
List* find_list(int n){
 List *find=head->next;

 while(find!=tail){
  if(find->key==n)
   return find;
  else find=find->next;
 }
 if(find==tail)
  return NULL;
}

List *ordered_list(int k){
 List *p;
 List *s;
 List *in;

 
 p=head;
 s=p->next;

 while(s->key<=k && s!=tail){
  p=p->next;
  s=s->next;
 }

 in=(List *)malloc(sizeof(List));
 in->key=k;
 in->next=s;
 p->next=in;

}

 

 

-------------------------------------------------------------------

 

 

struct _list{
 int key;
 struct _list *next;
};
typedef struct _list List;

extern void init_list(void);
extern List *head,*tail;
extern void insert_list(int key);
extern void print_list(void);
extern void delete_list(void);
extern List* find_list(int n);
extern List *ordered_list(int k);

'Program Language > 자료구조' 카테고리의 다른 글

링크드리스트  (0) 2016.10.11