[데이터 구조] 링크, 스 택, 대기 열 에 대한 정리

1. 정의
앞에서 이미 이 세 가지 구조 간 에 관계 가 있다 고 말 했 으 니, 여기 서 특별히 정리 해 보 자.
우선 우 리 는 세 가지 구조 정 의 를 고려 해 보 자.
//  
struct node{
  struct node *next;
  int data;
};

// 
struct node{
  int data;
  struct node *next;
};

struct stack{
  struct node *top;
  struct node *buttom;
};

//  
struct node{
  int data;
  struct node *next;
};

struct queue{
  struct node *front;
  struct node *rear;
}

당신 은 약간의 이상 을 발 견 했 을 것 입 니 다. 왜 링크 는 node 의 정의 만 있 습 니까?다시 한 번 생각해 보면 이 세 가지 모델 을 살 펴 보면 우 리 는 체인 시계 가 사실은 노드 로 구 성 된 것 을 발견 할 수 있 습 니 다. 창고 와 대기 열 은 우 리 는 그것 을 용기 로 간주 한 다음 에 안 으로 node 를 넣 을 수 있 습 니 다. 우리 의 체인 시계 도 머리 지침 과 꼬리 지침 이 있 습 니 다. 우 리 는 이렇게 정의 할 수 있 습 니 다. struct linkedlist {
struct  node *head;
struct node *tail;
};
이렇게 하면 아무런 문제 가 없다. 다만 모두 가 예전 의 방법 을 사용 하 는 것 에 익숙 해 졌 다. 왜냐하면 우 리 는 머리핀 이 노드 로 약화 되 었 다 는 것 을 알 수 있 기 때문이다. 이렇게:
struct node *head;
struct node *A=new node;
struct node *B=new node;
A->next=B;//여 기 는 AB 에 대한 할당 을 고려 하지 않 습 니 다.
B->next=NULL;
head = A;//notice
2. 삽입
삽입 을 회상 합 시다.
//    (          ,         )
struct node *n=new node;
tail->next=n
n->next=NULL;
tail=n;

//    (     rear  )
struct node *n=new node;
queue->rear->next=n;
n->next=NULL;
queue->rear=n;


//   
struct node *n=new node;
n->next=stack->top;
stack->top=n;

대기 열 이 비어 있 는 지 여 부 를 판단 해 야 한 다 는 것 을 알려 줍 니 다.
위 에서 보면 먼저 링크 와 큐 의 삽입 이 놀 라 울 정도 로 비슷 하 다 는 것 을 알 수 있 습 니 다. 스 택 이 약간 다 릅 니 다. 이 유 는 이러한 데이터 구조 도 를 머 릿 속 에서 생각해 보면 알 수 있 습 니 다. 큐 와 링크 노드 는 모두 가로로 놓 여 있 고 스 택 은 세로 로 되 어 있 기 때문에 스 택 에 한 노드 를 삽입 하면 반드시 next 는 한 노드 를 가리 키 고 대열 과 링크 는 꼬리 에 삽입 되 기 때문에 next 는 NULL 을 가리 킵 니 다.
3. 삭제
다음 삭제 작업 을 고려 합 니 다:
//  
struct node *temp=head;
head=head->next;
delete temp;
//  (            )
struct node *temp=queue->front;
queue->front=queue->front->next;
delete temp;
// (         )
struct node *temp=stack->top;
stack->top=temp->next;
delete temp;

여러 가지 표면 에 이 세 가지 구조 간 에 약간의 관계 가 존재 한다. 만약 에 이곳 을 고려 할 수 있다 면 그것 은 잘 배 웠 다 는 것 이다. 왜냐하면 우리 과학자 들 은 그들 을 선형 구조 로 나 누 었 기 때문이다. 물론 남 은 나무 와 그림 은 비 선형 구조 이다.

좋은 웹페이지 즐겨찾기