シングルリンクリストの詳細な実装(C言語)

シングルリンクリストとは シングルリンクリスト(Singly Linked List)は、データをノードとして格納し、各ノードが次のノードへのポインタを持つ線形データ構造です。配列や順序リスト(シーケンシャルリスト)と異なり、データの挿入・削除が柔軟で、必要に応じて動的にメモリを確保できます。 シングルリンクリストの構造 シングルリンクリストは、各ノードが2つの部 ...

5月15日 05:09 投稿

組込みシステムにおけるC言語の基本概念

関数とポインタの理解 関数の役割と種類 関数は特定の処理を再利用可能なコードブロックとして定義する仕組みです。コードの再利用性を高め、保守性を改善する目的で使用されます。 関数定義と呼び出しの基本 #include <stdio.h> // 関数のプロトタイプ void printBanner(); int main() { // 3回関数を呼び出す printBanner(); printBanner(); p ...

5月14日 19:59 投稿

マージソートのアルゴリズムとその実装

配列マージの基本 マージソートの核となる処理は、すでに整列済みの2つの部分配列を効率的に結合することです。たとえば、ar1[] = {1,2,3,4} と ar2[] = {3,4,5,6,7} の2つの配列があるとします。これらを効率的にマージするには、それぞれの配列にポインタを用意しておき、値を比較しながら新しい配列に格納していきます。 #include <stdio.h> #include <stdli ...

5月14日 18:52 投稿

C言語における文字列操作関数:strlen、strcpy、strcatの詳細解説

はじめに C言語では文字と文字列の処理が頻繁に行われますが、C言語自体には組み込みの文字列型が存在しません。文字列は通常、文字配列または文字列定数として扱われます。文字列定数は、その内容を変更しない文字列操作関数に使用されます。 1. 文字列操作関数の詳細 1.1 strlen関数 strlen関数:文字列長の計算 文字列の長さを計算する関数です。終端のヌル文字 ('\0' ...

5月14日 18:39 投稿

STM32における外部割込(EXTI)とNVIC制御の実装手法

システム割込みの基礎概念 プロセッサの動作において、割込みは主ループの実行を一時停止し、緊急度に応じたサブルーチンへ処理を委譲する機構です。特定の物理信号や内部タイマの経過、通信バッファの到達など、所定のイベントが発生した瞬間にCPUの制御権が切り替わり、処理完了後に元の文脈に復帰します。この機構により、ポーリング方式に依存しない非同期処理が実現さ ...

5月14日 18:35 投稿

C言語における文字列処理の変数予期せぬ挙動と解決策

開発環境:AMDプロセッサ、Windows 10 64bit、Cygwin64、Visual Studio Code、Code Runner拡張機能 問題が発生したコード例: #include<string.h> #include<stdio.h> typedef char DataType; typedef struct TreeNode { DataType value; struct TreeNode *left; struct TreeNode *right; } TreeNode, *TreePtr; TreeNode* parseExpression(const ...

5月14日 13:03 投稿

C言語における条件分岐と制御フローの基本

プログラム実行フローの基本構造 プログラムの実行フローには以下の3つの基本構造があります: 順次実行:コードを上から下へ順番に実行 条件分岐:条件評価に基づいて実行パスを決定 繰り返し:特定のコードブロックを繰り返し実行 条件分岐構文 if文の基本構文 if (条件式) { // 条件が真の場合に実行される処理 } 実装例:年齢確認システム #include <std ...

5月13日 13:32 投稿

C言語を用いたWindowsコンソール版スネークゲームの実装手順

Windowsプラットフォーム上で標準ライブラリとWin32 APIを活用し、コンソール画面に表示されるスネークゲームを作成する方法を解説します。本手法はGUIフレームワークに依存しないため、リソース消費が小さく、アルゴリズムの理解やシステムコールの学習に適しています。 データ構造と状態管理 蛇の本体は単方向連結リストで管理します。各ノードは現在地座標と次ノードへ ...

5月13日 12:03 投稿