リストを使ったスタック

スタックって何だっけーって悩みながらやっとできたよ。これで迷路を解くプログラムが作れる。

maiz.c

typedef struct{
  int x;
  int y;
}Item;

typedef struct list{
  Item item;
  struct list *next;
}List;

List *list = NULL;

線形リストの定義と初期化。

void push(int x,int y){
  List *new_node;
 
  new_node = (List*)malloc(sizeof(List));
  new_node->item.x = x;
  new_node->item.y = y;

  new_node->next = list;
  list = new_node;
}

push。上から詰め込む。

Item pop(){
  Item item;
  List *next;

  if(list==NULL){
    printf("error\n");
    item.x=-1;
    return item;
  } else { 
    item = list->item;
    next = list->next;
    free(list);
    list = next;
    return item;
  }
}

pop。上から取り出す。


posted by 右京 | c言語
blog comments powered by Disqus
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。