質問: 配列を使わず、連結リスト(単方向)のみでキューのデータ構造を実装したいです。 C言語を用いて、一つのプログラムで複数の連結リストを実装することは可能でしょうか?structの定義で行き詰まってしまったので、実例も教えてくださると嬉しいです...。 追記 ``` struct node1 { int data1; struct node1 *next1; }; struct node2 { int data2; struct node2 *next2; }; ``` 連結リストで2つのキューを実装し、2行の結果を出力したいです。上記したstructを2つ作る方法だと、enqueue, dequeueなどの関数を作る際にそのリスト専用の関数を作らなければいけないのか?と思ってそこから手が止まってしまいました。 最終的なゴールは、配列を用いず入力Nを読み込み、評価して2つの連結リストにそれぞれ結果をストアし、その結果を順に出力することです。 配列では実装できたのですが、時間がかかりすぎてしまいます。 追記2 要素数は最大1000000です。タイムリミットが1sのため、配列を用いたプログラムではTLEを返されてしまうので、それ以外の代替方法として連結リストを使えないかと思って質問させていただきました。 追記3 入力の条件は、 > > The first line contains the integer N. The second line contains N integers, a0,a1,...,aN−1. The integers are separated by a single space character. The third line contains N integers, b0,b1,...,bN−1. The integers are separated by a single space character. > > > となっています。 現時点では、 ``` scanf("%d", &N) //入力される要素数 for(i=0;i
回答: 連結リストがふたつ欲しいだけであれば、同じ struct の型を持った変数をふたつ定義すれば良いです。struct をふたつ定義する必要はありません。 ``` typedef struct node { int data; struct node * next; } node; ... int main() { /* ... */ node * list1 = /* ...初期化処理... */; node * list2 = /* ...初期化処理... */; /* ... */ } ```