まず、双方向連結リストの要素を表す構造体を定義します。
typedef struct Node {
int data;
struct Node* prev;
struct Node* next;
} Node;
次に、双方向連結リストを操作するための関数を実装します。
- 双方向連結リストの先頭に要素を追加する関数(push関数)
void push(Node headRef, int newData) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = newData;
newNode->prev = NULL;
newNode->next = (*headRef);
if ((*headRef) != NULL)
(*headRef)->prev = newNode;
(*headRef) = newNode;
}
- 双方向連結リストから要素を削除する関数(deleteNode関数)
void deleteNode(Node headRef, Node* delNode) {
if (*headRef == NULL || delNode == NULL)
return;
if (*headRef == delNode)
*headRef = delNode->next;
if (delNode->next != NULL)
delNode->next->prev = delNode->prev;
if (delNode->prev != NULL)
delNode->prev->next = delNode->next;
free(delNode);
}
以上のコード例では、push関数を使用して双方向連結リストの先頭に要素を追加し、deleteNode関数を使用して指定された要素を削除する方法を示しています。これらの関数を適切に組み合わせることで、双方向連結リストを作成し、要素を追加・削除できます。
このコード例はシンプルな実装であり、双方向連結リストの基本的な操作をカバーしています。もちろん、他にも様々な操作や機能を追加することができます。