c语言单向链表经典,C语言基础 - 实现单向链表
写在前面
弄了下个人站...防止内容再次被锁定...所有东西都在这里面
welcome~
个人博客
回归C基础
实现一个单向链表,并有逆序功能 (大学数据结构经常是这么入门的)
//定义单链表结构体
typedef struct Node{
int value;
struct Node *next;
}Node;
//创建链表
Node* createNode(int value,Node *next){
Node *node = malloc(sizeof(Node));
node->value = value;
node->next = next;
return node;
}
//打印链表
void printList(Node *list){
for (Node *node = list; node != NULL; node = node->next) {
printf("current node value %d \n",node->value);
}
}
//反转链表
Node* reverse(Node *listNode){
Node *reList = NULL;
Node *tmp;
while (listNode != NULL) {
tmp = malloc(sizeof(Node));
//逆转之后,原链表的头结点就是新链表的尾结点
//如果不是第一个结点,则本次产生的新结点是上次结点的前一个
if (reList == NULL) {
tmp->next = NULL;
}else{
tmp->next = reList;
}
tmp->value = listNode->value;
reList = tmp;
listNode = listNode->next;
}
//原链表的最后一个结点是新链表的头结点
return reList;
}
//销毁
void destroyList(Node *list){
Node *tmp;
while (list != NULL) {
tmp = list;
list = list->next;
free(tmp);
}
printf("链表销毁\n");
}
测试打印结果
int main(int argc, const char * argv[]) {
@autoreleasepool {
Node *first = createNode(0, NULL);
Node *list = first;
first->next = createNode(2, NULL);
first = first->next;
first->next = createNode(3, NULL);
first = first->next;
first->next = createNode(4, NULL);
first = first->next;
first->next = createNode(7, NULL);
first = first->next;
printf("源数据:\n");
printList(list);
printf("反转后数据:\n");
list = reverse(list);
printList(list);
destroyList(list);
}
return 0;
}
结果:
c-lianbiao.png
c语言单向链表经典,C语言基础 - 实现单向链表相关推荐
- C语言学习《经典C语言程序100例》day 2
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 思路:设一个数,让他加100,加268,然后求平方根,之后让得到的结果相乘,是完全平方数就可以得到原来 ...
- c语言程序项目任务教程 杨东芳 答案,c语言项目化教程 c语言程序设计
学了C语言,能做什么项目? 区块链底层技术的研发工程师谢燕热情地愤怒地回答. C语言是一件好事.在编程语言中,从应用系统到操作系统,都可以用C语言进行操作.可以说有很多用途.我将列出以下内容: 著名的 ...
- 单向链表的C语言实现与基本操作
本文的主要内容目录: 一.单向链表的C语言实现 二.单向链表的基本操作 一.单向链表的C语言实现 链表作为一种基本的数据结构在程序开发过程当中经常会使用到.对C语言来说链表的实现主要依靠结构体和指针, ...
- c语言 链表_C语言编程第22讲——单向有序链表的C语言实现
1.单向有序链表的含义 单向有序链表可以解析为四个名词: 表:一组元素: 链表:表中的元素不是从前往后一个挨着一个,而是通过一个元素才能找到另一个元素: 单向:表中的元素只能从前往后访问: 有序:表中 ...
- C语言实现链表【一】(无头单向非循环链表)
无头单向非循环链表 看到这个标题,是不是有小伙伴已经懵了呢? 只学过链表,怎么还有个无头和有头呢?怎么还有个循环和非循环呢?怎么还有个单向和双向呢?一连串的疑问... 其实这些都是链表的表示形式,只不 ...
- C语言基础入门:链表详解篇
链表概述 链表是一种常见的重要的数据结构.它是动态地进行存储分配的一种结构.它可以根据需要开辟内存单元.链表有一个"头指针"变量,以head表示,它存放一个地址.该地址指向一个元素 ...
- C语言经典例74-连接两个链表
目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 连接两个链表,如有链表A和链表B,将链表B按原顺序接在链表A后面,链表结构为: typedef int ElementType; typed ...
- 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 卷 ba ...
- 传智播客C语言视频第二季 第一季基础上增加诸多C语言案例讲解,有效下载期为10 5-10 10关闭
分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 卷 backup ...
最新文章
- 在持续交付阶段中的测试覆盖率(译)
- 统计学习方法第十七章作业:LSA潜在语义分析算法 代码实现
- 数据库:存储过程_数据科学过程:摘要
- 作者:景志刚(1977-),男,就职于中国人民银行征信中心数据部
- fragment怎么获得上下文环境_Flask 源码剖析 (三):Flask 的上下文机制 (上)
- 模拟——玩具谜题(洛谷 P1563)
- wincc按钮控制的vb脚本_VB操作wincc脚本心得.docx
- 一些你可能不知道的 Python 小技巧!
- Get value from agent failed:cannot connect to [[192.168.121.128]:10050]:[111Connection refused]]
- C++::My Effective C++
- python基础之字典、集合
- idea java配色方案_IDEA 主题配色方案+字体
- 啥是CTF?新手如何入门CTF?
- UE4 装备拾起 装备绑定
- Ps 初学者教程「34」如何使用魔棒工具选择单独的区域?
- 360全景拍摄用鱼眼镜头还是广角镜头?有什么区别?
- 金弘同创教育:拼多多店铺分数多久清算一次
- linux安装globalsign证书,Globalsign 标准型(EV型)代码签名证书提取指南
- 茗香茶艺网/茶叶宣传网站
- 游戏王,查卡器,编号,开源,代码,OCG,程序
热门文章
- WGS84坐标和UTM坐标的转换
- VMware 禁用虚拟内存文件,提升虚拟机响应速度 .
- 第一个mybatis项目(IDEA+MAVEN+Junit)
- springboot hibernate 缓存不更新_spring boot 整合 ehcache
- vector 结构体排序_指下码上横戈行——排序
- linux 重启服务器_linux入门-----6
- arduino蜂鸣器音乐代码青花瓷_教你用 Arduino 制造简易金属探测器
- mybatis 自动生成integer_通过mybatis-generator-core工具自动关联表生成对应model、mappers及dao层代码类完整教程...
- cas无法使用_【漫画】CAS原理分析!无锁原子类也能解决并发问题!
- stauml工具怎么导入文件_小伙教大家怎么剪辑短视频,1小时就学会添加字幕,值得收藏哦...