데이터 구조 양 방향 링크 생 성 및 읽 기 상세 및 인 스 턴 스 코드

데이터 구조 양 방향 링크 생 성 및 읽 기
양 방향 링크 는 더욱 편리 하 게 선구 자 를 찾기 위해 공간의 대 가 를 치 르 는 데이터 구조 이다.양 방향 링크 의 노드 정 의 는 다음 과 같다.

 typedef struct node
 {
   int x;
   struct node *prior,*next;
 }DLNode;
양 방향 링크 의 공간 구 조 는 다음 그림 과 같다.

양 방향 링크 생 성 은 다음 과 같 습 니 다.

//      
DLNode *create_DList()
{
  DLNode *p,*h,*l;
  int n,i,x;
  h = (DLNode *)malloc(sizeof(DLNode));
  h->prior = h;    //                        ;
  h->next = h;
  p = h;
  printf("              :");
  scanf("%d",&n);
  for(i = 0; i < n; i++)
  {
    printf("    %d  ",i+1);
    scanf("%d",&x);
    l = (DLNode *)malloc(sizeof(DLNode));
    l->x = x;
    p->next = l;
    l->prior = p;
    l->next = h;     //  ,l->next       , 
    h->prior = l;    //        l。                
    p = l;
  }
  return(h);  //        
}
위의 녹색 글 자 는 주의해 야 한다.
양 방향 링크 를 읽 는 코드 는 다음 과 같 습 니 다.

void out_DList(DLNode *l)
{
  DLNode *p;
  int i;
  p = l;
  p = p->next;
  while(p!=l)  //         
  {
    printf("%5d",p->x);
    p = p->next;  //     p       ;
  }
}
주의:①:머리 노드 의 값 이 비어 있 기 때문에 p=p->next;②:순환 하 는 조건 에 변화 가 생 겼 습 니 다.이것 은 순환 링크 이기 때문에 링크 의 꼬리 부분 은 머리 를 가리 키 기 때문에 조건 은 p!=l;
모든 코드 는 다음 과 같 습 니 다:

#include<stdio.h>
#include <stdlib.h>

typedef struct node
{
  int x;
  struct node *prior,*next;
}DLNode;

//    
DLNode *create_DList();
void out_DList(DLNode *l);

main()
{
  DLNode *l;
  l = create_DList();
  printf("    !");
  out_DList(l);
}

//      
void out_DList(DLNode *l)
{
  DLNode *p;
  int i;
  p = l;
  p = p->next;
  while(p!=l)
  {
    printf("%5d",p->x);
    p = p->next;
  }
}


//      
DLNode *create_DList()
{
  DLNode *p,*h,*l;
  int n,i,x;
  h = (DLNode *)malloc(sizeof(DLNode));
  h->prior = h;
  h->next = h;
  p = h;
  printf("              :");
  scanf("%d",&n);
  for(i = 0; i < n; i++)
  {
    printf("    %d  ",i+1);
    scanf("%d",&x);
    l = (DLNode *)malloc(sizeof(DLNode));
    l->x = x;
    p->next = l;
    l->prior = p;
    l->next = h;
    h->prior = l;
    p = l;
  }
  return(h);
}
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기