前言:
此刻我们对“c语言编写链表”大致比较关心,你们都想要分析一些“c语言编写链表”的相关知识。那么小编同时在网摘上网罗了一些关于“c语言编写链表””的相关知识,希望各位老铁们能喜欢,我们一起来学习一下吧!以下是基于Linux系统,用C语言实现的一个存储万能数据类型的环形链表。
代码逻辑相对于普通链表,确实有些难度,先看懂,再运用。
#include <stdio.h>#include <stdlib.h>// 定义链表结点typedef struct Node { void* data; struct Node* next;} Node;// 创建结点Node* createNode(void* data) { Node* newNode = (Node*)malloc(sizeof(Node)); newNode->data = data; newNode->next = NULL; return newNode;}// 插入结点到链表尾部void insert(Node** head, void* data) { Node* newNode = createNode(data); if (*head == NULL) *head = newNode; else { Node* temp = *head; while (temp->next != NULL) temp = temp->next; temp->next = newNode; } newNode->next = *head;}// 遍历链表并打印结点数据void printList(Node* head) { if (head == NULL) { printf("链表为空\n"); return; } Node* temp = head; do { printf("%p ", temp->data); // 根据实际情况打印数据,这里示意输出内存地址 temp = temp->next; } while (temp != head); printf("\n");}// 销毁链表void destroyList(Node** head) { if (*head == NULL) return; Node* current = *head; Node* next; do { next = current->next; free(current); current = next; } while (current != *head); *head = NULL;}int main() { Node* myList = NULL; int num1 = 10; int num2 = 20; int num3 = 30; insert(&myList, &num1); insert(&myList, &num2); insert(&myList, &num3); printList(myList); destroyList(&myList); return 0;}
【多余的解释:】
上述代码定义了一个结构体Node作为链表的结点,其中data成员可以存储任意类型的数据。通过createNode函数创建结点,通过insert函数将结点插入链表尾部,通过printList函数遍历链表并打印数据。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #c语言编写链表