头插法&尾插法建立单链表
可运行代码
#include <stdio.h> #include <stdlib.h> typedef int Elemtype; //结构体的定义 struct LNode{ Elemtype data;//数据域,存储数据 struct LNode *next;//指针域,存储指针,存放后继节点信息 }LNode; typedef struct LNode* Linklist;//定义结构体指针型变量,将结构体指针等价于Linklist //头插法建立链表 void CreateListHead(Linklist L, int n){//n为创建链表的大小空间 Linklist p; L->next = NULL;//开始时,该节点的指针域为空,也就是下一个节点为空,不包含其他节点 for(int i = 0; i < n; i ++){//定义含有i个空间大小的空间 int x; scanf("%d",&x); p = (struct LNode *)malloc(sizeof(struct LNode));//申请足够大小的空间,将该空间的基地址赋值给p p->data = x;//在数据域中存储数据 p->next = L->next; L->next = p;//重新定义头指针的下一个,为当前的开始位置 } } //尾插法建立链表 void CreateListTail(Linklist L,int n){ Linklist p,r; r = L; for(int i = 0; i < n; i++){ int x; scanf("%d",&x); p = (struct LNode *)malloc(sizeof(struct LNode)); p->data = x;//在数据域中存储数据 r->next = p; r = p;//r指向新的表尾结点 } r->next = NULL; //尾结点指针置空 } //链表的遍历输出 void TraverseList(Linklist L){ Linklist p, q; p = L;//将头指针赋值给p while(p->next != NULL){ q = p->next; printf("%d ", q->data); p = p->next; } } int main() { Linklist L = (struct LNode*) malloc(sizeof(struct LNode)); int n; scanf("%d",&n); //CreateListHead(L, n); CreateListTail(L,n); TraverseList(L); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程