
こんにちわ
C言語初心者です。
C言語の教科書を見ていたら
双方向リストへの挿入というところで
struct CELL{
struct CELL *prev;
struct CELL *next;
int value;
}
x->prev=p;
x->next=p->next;
p->next->prev=x;
p->next=x;
という記述がありました。
質問はこの部分で
p->next->prev=x;
アロー演算子が2個つくとどうなるんですか?
出来ればこの双方向リストの例でたとえてもらえるとうれしいです。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
複数の演算子が使われている式を計算する場合、
例1) A # B $ C
どの順番で計算を行うかは、演算子の優先順位と結合規則を元に決まります
例2) 優先順位が # < $ なら A # (B $ C)
例3) 優先順位が # > $ なら (A # B) $ C
例4) 優先順位が同じ、結合規則が「右から左」なら A # (B $ C)
例5) 優先順位が同じ、結合規則が「左から右」なら (A # B) $ C
参考) http://msdn.microsoft.com/ja-jp/library/2bxt6kc4 …
ご質問のケースですが、
アロー演算子どうし → 優先順位が同じ、結合規則が「左から右」
ついでにアローと代入 → 優先順位が アロー > 代入
なので、
p->next->prev = x;
↓
(p->next) -> prev = x; // アローは「左から右」
↓
((p->next)->prev) = x; // アロー > 代入
↓
struct CELL* q = p->next;
(q->prev) = x;
意味合い的には、双方向リストの要素 p の次に x を挿入するため、
1. p の次の要素にて
2. 前への参照を
3. x に書き換る
と思われます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
[VBS]変数を定数に変換する方法...
-
エラーの意味は? Lvalue req...
-
EXCEL/VBA 変数の値をクリップ...
-
Variant型で宣言してるのにEmpt...
-
jsp~jspにhiddenを使って変数...
-
魔方陣のつくりかた
-
なぜ警告表示?
-
PL/Iについて、教えてください。
-
ASP+SQLにてSessionがNullになる
-
親ウィンドウの情報をインライ...
-
C言語 y = func( 3*x ) が良く...
-
stdpicture型の変数に、、
-
整数xxxが大き過ぎますというエ...
-
gridViewの行選択解除
-
Accessコンボボックスにレコー...
-
Excel-vba 文字列と変数を...
-
フォームを開くときに、コンボ...
-
C言語 exitの使い方
-
VBAのWorksheetFunctionの引数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
jsp~jspにhiddenを使って変数...
-
EXCEL/VBA 変数の値をクリップ...
-
テキストボックスの値を変数に...
-
C言語 アロー演算子について質...
-
整数xxxが大き過ぎますというエ...
-
[VBS]変数を定数に変換する方法...
-
processing エラーで、 "cannot...
-
gridViewの行選択解除
-
Variant型で宣言してるのにEmpt...
-
プログラミングで変数と関数の...
-
C言語
-
DataTableの値を変数に代入したい
-
VB6.0 DataGridでのfirstRowの...
-
DataColumn型の使用方法
-
String型ローカル変数の初期化...
-
VBA 1行で複数の代入を行った...
-
変数宣言と初期値代入の場所に...
-
valueChanged の引数について
おすすめ情報