下面是一个C语言建立单链表的完整代码示例:
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构
struct Node {
int data;
struct Node* next;
};
// 在链表末尾插入新节点
void insertAtEnd(struct Node** head, int newData) {
// 创建新节点
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = newData;
newNode->next = NULL;
// 如果链表为空,则将新节点作为头节点
if (*head == NULL) {
*head = newNode;
return;
}
// 遍历链表直到最后一个节点
struct Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
// 在链表末尾插入新节点
temp->next = newNode;
}
// 打印链表的元素
void printList(struct Node* node) {
while (node != NULL) {
printf("%d ", node->data);
node = node->next;
}
printf("\n");
}
int main() {
struct Node* head = NULL; // 初始化头节点
// 在链表末尾插入元素
insertAtEnd(&head, 1);
insertAtEnd(&head, 2);
insertAtEnd(&head, 3);
insertAtEnd(&head, 4);
insertAtEnd(&head, 5);
// 打印链表元素
printList(head);
return 0;
}
这段代码首先定义了一个链表节点结构Node
,其中包含数据域data
和指向下一个节点的指针next
。
然后,通过insertAtEnd
函数在链表末尾插入新节点。该函数首先创建一个新节点,并将新节点的数据域设置为newData
,将新节点的指针域next
设置为NULL
。
如果链表为空,则将新节点作为头节点。否则,遍历链表直到最后一个节点,然后将新节点插入到最后一个节点的next
指针。
最后,通过printList
函数打印链表的元素。该函数遍历链表,并依次打印每个节点的数据域。