C语言构建二维链表
时间: 2023-07-10 08:15:45 浏览: 54
在C语言中,我们可以使用结构体来定义二维链表的节点,下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义节点结构体
struct node {
int data;
struct node *right;
struct node *down;
};
// 创建一个新节点
struct node* createNode(int data) {
struct node* newNode = (struct node*) malloc(sizeof(struct node));
newNode->data = data;
newNode->right = NULL;
newNode->down = NULL;
return newNode;
}
// 插入一个节点到右边
void insertRight(struct node* head, int data) {
struct node* temp = head;
while (temp->right != NULL) {
temp = temp->right;
}
temp->right = createNode(data);
}
// 插入一个节点到下面
void insertDown(struct node* head, int data) {
struct node* temp = head;
while (temp->down != NULL) {
temp = temp->down;
}
temp->down = createNode(data);
}
// 打印二维链表
void printList(struct node* head) {
struct node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
struct node* temp2 = temp->right;
while (temp2 != NULL) {
printf("%d ", temp2->data);
temp2 = temp2->right;
}
printf("\n");
temp = temp->down;
}
}
// 测试
int main() {
struct node* head = createNode(1);
insertRight(head, 2);
insertRight(head, 3);
insertDown(head, 4);
insertRight(head->down, 5);
insertRight(head->down, 6);
insertDown(head->right, 7);
insertRight(head->right->down, 8);
printList(head);
return 0;
}
```
在这个示例中,我们定义了一个节点结构体,它包含了一个数据域以及指向右边和下面节点的指针。我们通过 `createNode()` 函数来创建一个新节点,使用 `insertRight()` 和 `insertDown()` 函数来插入节点到右边和下面。最后,我们可以使用 `printList()` 函数来打印整个二维链表。