首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言二維數組進階操作:插入行/列、交換元素與軌跡追蹤

     編輯:關於C語言

設計目標

實現二維數組的動態行/列插入、指定位置元素交換,並記錄每個元素的位置變化軌跡。

核心數據結構

// 位置節點
typedef struct _PathNode {
    int x;  // 行
    int y;  // 列
} Node;

// 軌跡鏈表節點(不帶頭節點)
typedef struct _PathNodeList {
    Node node;
    struct _PathNodeList *pNext;
} PathNodeList;

// 當前有效行列數
typedef struct _CurRowColNum {
    int iArrayRow;
    int iArrayCol;
} CurRowColNum;

// 二維數組:每個元素對應一個軌跡鏈表
PathNodeList* g_pGrid[MAX_ROW_NUM][MAX_COL_NUM];

關鍵功能實現

初始化與銷毀

  • InitGrid:為每個有效位置創建初始軌跡節點。
  • DestoryGrid:遞歸釋放所有鏈表內存。

元素交換

SwapNode 交換兩個位置的元素,並將雙方當前位置插入對方軌跡鏈表,實現軌跡記錄。

插入行

insertRowtoGrid:若插入位置超出當前有效行,直接在末尾添加;否則先在末尾添加空行,再通過逐行交換將新行移動到目標位置,保證軌跡正確更新。

插入列

insertColtoGrid:邏輯同插入行,按列操作。

獲取軌跡

GetNodePath 返回指定初始位置元素的完整移動軌跡鏈表。

測試用例

InitGrid(5, 5);
SwapNode((Node){3,4}, (Node){1,1});
insertRowtoGrid(1);
insertColtoGrid(3);
GetNodePath((Node){4,4}, &pList);  // 輸出該元素所有歷史位置
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved