너의 프로그램은 일련의 정수를 읽을 것이다. 정수의 수량을 미리 모르고, 일단 -1을 읽으면 입력이 끝난다는 것을 의미한다.그리고 입력과 반대되는 순서에 따라 읽은 숫자를 출력하고 마지막 표지가 끝난 -1을 포함하지 않는다.

#include 
#include 
/*   */
typedef struct _data{
  int value;
  struct _data *next;// 
  struct _data *back;// 
} Data;
typedef struct _list{
  Data *head;// 
  Data *tail;// 
} List;

void creat_link(List *pList, int x,int cnt);
void reverse_link(List *pList);

int main(){
  List list;
  list.head = list.tail = NULL;
  int x;
  int cnt = 0;
  while(x != -1){
    scanf("%d", &x);
    creat_link(&list, x, cnt);
    cnt++;
  }
  reverse_link(&list);
  Data *p;
  Data *q;
  for (p = list.head; p;p=p->next){
    free(p->back);
  }
    return 0;
}
/*   */
void creat_link(List *pList, int x,int cnt){
  if ( x != -1){
    if (cnt == 0){// 
      Data *p = (Data *)malloc(sizeof(Data));
      p->value = x;
      p->next = NULL;
      p->back = NULL;
      pList->head = p;
      pList->tail = pList->head;
    }
    if (cnt != 0){// 
      Data *p = (Data *)malloc(sizeof(Data));
      p->value = x;
      p->next = NULL;
      p->back = pList->tail;
      pList->tail->next = p;
      pList->tail = p;
    }
  }
}
void reverse_link(List *pList){// 
  Data *p;
  for (p = pList->tail; p;p=p->back){
    printf("%d ", p->value);
  }
}

좋은 웹페이지 즐겨찾기