写在前面

弄了下个人站...防止内容再次被锁定...所有东西都在这里面

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语言基础 - 实现单向链表相关推荐

  1. C语言学习《经典C语言程序100例》day 2

    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 思路:设一个数,让他加100,加268,然后求平方根,之后让得到的结果相乘,是完全平方数就可以得到原来 ...

  2. c语言程序项目任务教程 杨东芳 答案,c语言项目化教程 c语言程序设计

    学了C语言,能做什么项目? 区块链底层技术的研发工程师谢燕热情地愤怒地回答. C语言是一件好事.在编程语言中,从应用系统到操作系统,都可以用C语言进行操作.可以说有很多用途.我将列出以下内容: 著名的 ...

  3. 单向链表的C语言实现与基本操作

    本文的主要内容目录: 一.单向链表的C语言实现 二.单向链表的基本操作 一.单向链表的C语言实现 链表作为一种基本的数据结构在程序开发过程当中经常会使用到.对C语言来说链表的实现主要依靠结构体和指针, ...

  4. c语言 链表_C语言编程第22讲——单向有序链表的C语言实现

    1.单向有序链表的含义 单向有序链表可以解析为四个名词: 表:一组元素: 链表:表中的元素不是从前往后一个挨着一个,而是通过一个元素才能找到另一个元素: 单向:表中的元素只能从前往后访问: 有序:表中 ...

  5. C语言实现链表【一】(无头单向非循环链表)

    无头单向非循环链表 看到这个标题,是不是有小伙伴已经懵了呢? 只学过链表,怎么还有个无头和有头呢?怎么还有个循环和非循环呢?怎么还有个单向和双向呢?一连串的疑问... 其实这些都是链表的表示形式,只不 ...

  6. C语言基础入门:链表详解篇

    链表概述 链表是一种常见的重要的数据结构.它是动态地进行存储分配的一种结构.它可以根据需要开辟内存单元.链表有一个"头指针"变量,以head表示,它存放一个地址.该地址指向一个元素 ...

  7. C语言经典例74-连接两个链表

    目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 连接两个链表,如有链表A和链表B,将链表B按原顺序接在链表A后面,链表结构为: typedef int ElementType; typed ...

  8. 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 卷 ba ...

  9. 传智播客C语言视频第二季 第一季基础上增加诸多C语言案例讲解,有效下载期为10 5-10 10关闭

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 卷 backup ...

最新文章

  1. 在持续交付阶段中的测试覆盖率(译)
  2. 统计学习方法第十七章作业:LSA潜在语义分析算法 代码实现
  3. 数据库:存储过程_数据科学过程:摘要
  4. 作者:景志刚(1977-),男,就职于中国人民银行征信中心数据部
  5. fragment怎么获得上下文环境_Flask 源码剖析 (三):Flask 的上下文机制 (上)
  6. 模拟——玩具谜题(洛谷 P1563)
  7. wincc按钮控制的vb脚本_VB操作wincc脚本心得.docx
  8. 一些你可能不知道的 Python 小技巧!
  9. Get value from agent failed:cannot connect to [[192.168.121.128]:10050]:[111Connection refused]]
  10. C++::My Effective C++
  11. python基础之字典、集合
  12. idea java配色方案_IDEA 主题配色方案+字体
  13. 啥是CTF?新手如何入门CTF?
  14. UE4 装备拾起 装备绑定
  15. Ps 初学者教程「34」如何使用魔棒工具选择单独的区域?
  16. 360全景拍摄用鱼眼镜头还是广角镜头?有什么区别?
  17. 金弘同创教育:拼多多店铺分数多久清算一次
  18. linux安装globalsign证书,Globalsign 标准型(EV型)代码签名证书提取指南
  19. 茗香茶艺网/茶叶宣传网站
  20. 游戏王,查卡器,编号,开源,代码,OCG,程序

热门文章

  1. WGS84坐标和UTM坐标的转换
  2. VMware 禁用虚拟内存文件,提升虚拟机响应速度 .
  3. 第一个mybatis项目(IDEA+MAVEN+Junit)
  4. springboot hibernate 缓存不更新_spring boot 整合 ehcache
  5. vector 结构体排序_指下码上横戈行——排序
  6. linux 重启服务器_linux入门-----6
  7. arduino蜂鸣器音乐代码青花瓷_教你用 Arduino 制造简易金属探测器
  8. mybatis 自动生成integer_通过mybatis-generator-core工具自动关联表生成对应model、mappers及dao层代码类完整教程...
  9. cas无法使用_【漫画】CAS原理分析!无锁原子类也能解决并发问题!
  10. stauml工具怎么导入文件_小伙教大家怎么剪辑短视频,1小时就学会添加字幕,值得收藏哦...