用C语言代码写出单链表的两种建表方法
时间: 2024-09-27 09:04:59 浏览: 26
在C语言中,可以使用两种常见的方法来创建单链表:静态初始化法和动态分配内存法。
1. **静态初始化法**:
这种方法适合链表的大小是已知且固定的。例如,我们可以预先定义一个固定大小的节点数组:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
Node arrayBasedLinkedList[5] = {
{1, &arrayBasedLinkedList[1]}, // 首节点数据为1,指向下一位
{2, &arrayBasedLinkedList[2]},
{3, &arrayBasedLinkedList[3]},
{4, &arrayBasedLinkedList[4]}, // 最后一位节点指向NULL结束链表
{0, NULL} // 初始化最后一个元素为NULL
};
```
2. **动态分配内存法**(也叫动态链表):
这种方法适用于链表长度未知的情况,节点会在需要时动态地分配和释放内存:
```c
typedef struct Node {
int data;
struct Node* next; // 指向下一个节点的指针
} Node;
// 动态创建链表
void createDynamicList(Node** head) {
*head = (Node*)malloc(sizeof(Node)); // 分配空间给第一个节点
(*head)->data = 1;
(*head)->next = NULL;
Node* current = *head; // 当前节点指向头节点
for (int i = 2; i <= 5; i++) {
Node* newNode = (Node*)malloc(sizeof(Node)); // 为每个新节点分配空间
newNode->data = i;
newNode->next = current->next; // 新节点指向当前节点的下一个位置
current->next = newNode; // 更新当前节点的next指向新节点
current = newNode; // 移动current到新节点
}
}
```
在这个例子中,`createDynamicList`函数会创建一个包含五个节点的链表。
阅读全文