シングルリンクリストの詳細な実装(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 投稿