'연결리스트'에 해당되는 글 2건

  1. 2010.05.14 연결리스트를 이용한 이진트리의 순회방법
  2. 2009.12.16 연결리스트더미有

연결리스트를 위해 구조체를 정의하였다.


typedef struct TreeNode{
char * data;
struct TreeNode * left;
struct TreeNode * right;
}TreeNode;

그리고 3가지의 순회방법이 있는데

전위, 중위, 후위가 있다.

전위는
root-left-right
중위는
left-root-right
후위는
left-right-root


트리구조는 이렇게 만들었다.


순회를 시키면
이런 순으로 트리를 순회하는 것이다.

'프로그래밍 기초 > 자료구조 & 알고리즘' 카테고리의 다른 글

유전 알고리즘  (0) 2010.06.10
영향력 분포도  (0) 2010.06.10
트리의 배열표현 방법  (0) 2010.05.14
큐 만들기  (0) 2010.05.14
스택만들기  (0) 2010.05.13
Posted by 아몰라

연결리스트


노드 - 데이터를 보관해준다!

head - 맨앞의 노드를 지칭
tail - 맨뒤의 노드를 지칭
head랑 tail은 위치정보만 가지고있다.(링크다!)

단일연결 - 어떠한 노드의 위치를 알수없다. (Stoker)
이중연결 - 어떠한 노드의 위치를 알수있다.


seek를 이용 seek<노드의값 이면 앞에 삽입하자!

Dummy 노드 있는게 더 좋다. 특정한 노드 사이에 저장이된다!


pushback - 맨 뒤에 보관한다.

1. in을 보관하는 노드 생성
2. tail 앞에 보관



Ehlist()                               //헤드랑 테일 초기화~
  {
   head = new EhNode();       //시작을 가르킬더미 생성
   tail = new EhNode();          //마지막을 가르킬 더미 생성
   head->af = tail;                
   tail->be = head;
   usage = 0;                      // 연결리스트의 개수를 알려준다
   
  }
  virtual ~Ehlist()
  {
   EhNode * ehnode = tail->be;  // 테일이 가르키는 노드의 옆에노드를 가르킨다.

   while(usage!=0)
   {
    tail->be = tail->be->be;       // 테일을 왼쪽왼쪽 가르키게 한다. 
    delete tail->be;                  // 테일 옆에 노드를 삭제
    usage--;
    
   }

   delete tail,head;
  }

  
  void push_back(T data)
  {
   EhNode * ehnode;
   ehnode = new EhNode(data);
   HangNode(ehnode, end().now); //노드를 넣을 데이터와 마지막 노드의 위치를 넘겨준다.
   usage++;

  }
  
  void insert(iterator at,T data)
  {
   EhNode * ehnode;
   ehnode = new EhNode(data);
   HangNode(ehnode, at.now);  //노드를 넣을 데이터와 선택위치를 넘겨준다.
   usage++;
  }

  
  void erase(iterator at)
  {
   EhNode * ehnode = at.now;
   ehnode->be->af = ehnode->af;
   ehnode->af->be = ehnode->be;
   usage--;
  }

'프로그래밍 기초 > 자료구조 & 알고리즘' 카테고리의 다른 글

지뢰찾기  (0) 2010.05.03
3n+1  (0) 2010.05.03
스케줄링 (라운드 로빈)  (0) 2009.12.17
병합정렬 & 퀵 정렬 비교 및 기수정렬  (0) 2009.12.17
퀵 정렬  (0) 2009.12.16
Posted by 아몰라
이전버튼 1 이전버튼