单向链表(含头节点)
Github代码链接: Data_Structure_Learning/Single List/single_list.c
一、单向链表的结构
二、代码示例
#include <stdio.h> #include <stdlib.h> // 定义链表节点结构体 typedef struct tagLinkedListNode { int data; // 数据域 struct tagLinkedListNode* next; // 指针域,指向下一个节点 }List_Node_S, List_Head_S; /* 创建含头节点的单链表 */ List_Head_S* LinkedList_CreateList(void) { List_Head_S* pstListHeadNode; /* 头节点 */ pstListHeadNode = (List_Node_S*) malloc (sizeof(List_Node_S)); if(NULL != pstListHeadNode) { pstListHeadNode->data = 0; pstListHeadNode->next = NULL; } return pstListHeadNode; } /* 尾部插入普通节点 */ void LinkedList_InserNode (List_Head_S* pstList, int idata) { /* 查找尾节点 */ List_Node_S* pstHeadNode = pstList; List_Node_S* pstLastNode = pstHeadNode; while(NULL != pstLastNode->next) { pstLastNode = pstLastNode->next; } /* 申请新普通节点 */ List_Node_S* pstNewNode; pstNewNode = (List_Node_S*) malloc (sizeof(List_Node_S)); pstNewNode->data = idata; pstNewNode->next = NULL; /* 尾插 */ pstLastNode->next = pstNewNode; } /* 打印普通节点 */ void LinkedList_PrintList (List_Head_S* List) { List_Head_S* pstListHead = List; List_Node_S* pstPrintNode = pstListHead->next; while(NULL != pstPrintNode) { printf("%d \n",pstPrintNode->data); pstPrintNode = pstPrintNode->next; } } int main(void) { List_Head_S* List; /*创建头节点--->创建单向链表*/ List = LinkedList_CreateList(); /*尾部添加普通节点*/ printf("添加节点数据10, 11, 12\n"); LinkedList_InserNode(List, 10); LinkedList_InserNode(List, 11); LinkedList_InserNode(List, 12); /* 打印普通节点 */ printf("单链表中普通节点数据:\n"); LinkedList_PrintList(List); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY