要建立多个动态链表,可以使用结构体和指针来实现。
首先,定义一个结构体来表示链表的节点,包含一个数据域和一个指向下一个节点的指针域,如下所示:
typedef struct Node { int data; // 数据域 struct Node* next; // 指针域 } Node;
然后,定义一个函数来创建一个新的节点,接受一个整数作为参数,并返回指向新节点的指针,如下所示:
Node* createNode(int data) { Node* newNode = (Node*)malloc(sizeof(Node)); // 分配内存空间 newNode->data = https://www.yisu.com/ask/data; // 设置数据>next = NULL; // 将指针域设为NULL return newNode; // 返回指向新节点的指针 }
接下来,可以定义一个函数来添加节点到链表中,这里以头插法为例,如下所示:
void insertNode(Node** head, int data) { Node* newNode = createNode(data); // 创建一个新节点 newNode->next = *head; // 将新节点的指针域指向原头节点 *head = newNode; // 更新头节点为新节点 }
最后,可以定义一个函数来打印链表中的节点,如下所示:
void printList(Node* head) { Node* current = head; // 从头节点开始遍历链表 while (current != NULL) { printf("%d ", current->data); // 打印当前节点的数据 current = current->next; // 将指针移动到下一个节点 } printf("\n"); }
使用上述函数,可以建立多个动态链表,示例代码如下:
int main() { Node* list1 = NULL; Node* list2 = NULL; insertNode(&list1, 1); insertNode(&list1, 2); insertNode(&list1, 3); insertNode(&list2, 4); insertNode(&list2, 5); insertNode(&list2, 6); printf("List 1: "); printList(list1); printf("List 2: "); printList(list2); return 0; }
输出结果为:
List 1: 3 2 1 List 2: 6 5 4
这样就建立了两个动态链表list1和list2,并分别添加了若干节点。