連結リストを使ってキュー構造を作るプログラム
Posted: 2016年4月14日(木) 18:50
enqueue(int i)はキューの末尾にiをもつ要素を挿入する関数で、dequeue()は先頭の要素を削除する関数、print()はリスト全てを表示させる関数です。
mainの操作をして結果を表示させたいのですが、コンパイルして実行するとセグメンテーション違反と出てしまいます。どこがおかしいのか教えて下さい。
mainの操作をして結果を表示させたいのですが、コンパイルして実行するとセグメンテーション違反と出てしまいます。どこがおかしいのか教えて下さい。
#include <stdio.h>
#include<stdlib.h>
typedef struct cell{
int element;
struct cell *next;
}cell;
cell *queue = NULL;
void enqueue(int i){
cell *n = queue;
cell *n2 = queue;
cell *add = (cell *)malloc(sizeof(cell));
while(n != NULL){
n = n->next;
}
add->element = i;
n2 = n;
n = add;
add->next = n2;
}
void dequeue(){
queue = queue->next;
}
void print(){
cell *n = queue;
while(n != NULL){
printf("%d\n ", n->element);
n = n->next;
}
}
int main(void)
{
enqueue(5);
enqueue(3);
enqueue(6);
dequeue();
enqueue(3);
enqueue(7);
dequeue();
print();
return 0;
}