
No.1ベストアンサー
- 回答日時:
このプログラムは、おそらく期待通りの動きをしません。
ここに書かれた通りならプログラムが間違っています。あなたが入力したのなら、入力間違いしていると思われます。
使われている命令自体は、Perlの基礎です。
なので、個々の命令については理解はできているものとして、解説はしません。
「連結リスト」という、データ構造は理解できてますか?
それを、このプログラムではどうやって実現させてますか?ハッシュ?クラス?リスト(データ構造としての連結リストではなく、Perlの機能としての)?
$old = A→B→C→D→undef(終端判別用)
となっているリストを
$new = D→C→B→A→undef
にして、$newを返す、というのが期待される動作だと思われます。
ここで「→」は A->NEXT = B となっていることを表現しています。
my&new=undef; は my $new=undef; の間違いでは。
連結リストにハッシュが使われているなら {'NEXT'} 等と{}を使います。
リストが使われているなら、どこかで use constant NEXT=>1 などとNEXTに値を設定しているはずです。
どちらが正しいか、あるいは、これ以外なのか、確認してください。
動作がわからないなら、コンピュータになったつもりで、自分で実際に実行してみましょう。
・初期状態
undef($new)
A($old)→B→C→D→undef
・whileループ
A($cur,$old)→B→C→D→undef
・$oldを次の位置へ
A($cur)→B($old)→C→D→undef
・$curの矢印を$newへ変更
undef($new)←A($cur) / B($old)→C→D→undef
・$newを変更: これが提示されてるプログラムに抜けている
undef←A($cur, $new) / B($old)→C→D→undef
・whileの次のループ
undef←A($new) / B($cur, $old)→C→D→undef
・$oldを次の位置へ
undef←A($new) / B($cur)→C($old)→D→undef
・$curの矢印を$newへ変更
undef←A($new) ← B($cur) / C($old)→D→undef
・$newを変更
undef←A ← B($cur, $new) / C($old)→D→undef
以下同様。最終的に
undef←A ← B← C ←D($new) / undef($cur, $new)
でwhileの条件が偽→終了
No.2
- 回答日時:
## 私も初心者でここでお世話になっていますので恩返しです。
## 私のわかる範囲で書いてみました。参考になれば幸いです。
sub list_reverce{ ##サブルーチンの名称は list_reverce だよ、と言う意味
my $old=shift; ## 変数$oldをmy で宣言するとともに 引数からshift関数で代入している
my&new=undef; ## なぞ? my $new=undef;のタイプミス(typoという)か?ならば変数$newを宣言し未定義値undefを代入し明示的に未定義にしている
while (my $cur=$old){ ## $curが$oldの間処理を繰り返す
$old=$old‐>[NEXT]; ## 先ほどのshiftした引数はリファレンスなのですね、そのリファレンスをデリファレンスした配列のNEXT番目を$oldに代入
$cur‐>[NEXT]=$new; ## $newを$curをデリファレンスした配列のNEXT番目に$newを代入
}
return $new ## $newが戻り値
}
## 全体を見ないと[NEXT]と言うのがよくわかりません。
## 以上私のわかる範囲で書いてみました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 高校英語の問題 1 2023/05/23 15:29
- 英語 この英語の意味わかる人いませんか? 1 2022/04/09 13:39
- 英語 英語の問題でどう解いたらよいか分からないものがあります。教えていただけませんか?接続詞の単元です。 2 2023/06/18 15:45
- 戸籍・住民票・身分証明書 今日はJAにブロックしてフラれ 2 2022/05/28 09:01
- その他(クラウドサービス・オンラインストレージ) Google ColabでGoogleドライブのサブフォルダにファイルを生成する方法 1 2022/10/31 17:37
- 英語 私の車は、購入してから7年目になるが、これまでに車検を3回受けた。の英訳 11 2022/06/13 03:39
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- 英語 【英語】 新しい職場の人と仲良くできるか心配です。 ①I'm worried I won't get 4 2022/06/26 21:19
- Visual Basic(VBA) FileSearch2007に変わる構文について 1 2022/12/16 16:57
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
$template->output();の時に ...
-
なぜ?
-
vbsでホームページ表示について
-
10Mバイトて文字数に すると何...
-
アンケートフォームについて
-
カレンダー1ヶ月分をわけて表示
-
DataGridViewの特定列に入力さ...
-
PHPのCookieが有るか無いかで、...
-
UTF-8で5~6バイトになる文字コ...
-
平滑化フィルタ
-
ハッシュの配列???
-
文字数制限(バイト)をしたい
-
Excel 1セル当りの文字数が2...
-
フォームメールで名前を全角の...
-
UCS-2の一覧表が欲しい
-
VB6でのファイルサイズ取得につ...
-
<wbr>を強制的に入れるには??
-
textarea形式のフォームで複数...
-
ログを複数同時に削除
-
【VB2005】テキストボックス内...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
pythonにCでのexternはありますか
-
3桁コードの先頭文字を取り出す
-
マクロの書き換え箇所がわかり...
-
漢字交じり文字列からのlocalti...
-
チェックボックスのvalue値の取...
-
エクセル2000マクロエラー...
-
Perlで変数中のエスケープされ...
-
perlのgrepでmyを付けた場合と...
-
python 3.10で 同じlistに同じ...
-
なぜかわかりませんscanf()の戻...
-
配列へのポインタの代入
-
UWSCにおける変数の扱い方
-
@color1 = ('0000ae',・・・,'$...
-
多元配列の0初期化
-
CSVから構造体へ代入
-
perlのプログラミングについて
-
VB2010での連立方程式の計算
-
c言語 グローバル変数
-
CGIで暗号化複合化
-
書いた文章を改行など含めて文...
おすすめ情報