C语言 链表创建及操作
C语言 链表创建及操作
- 第一部分构建链表,定义结构体,分别用头插法、尾插法实现,这里封装了打印函数:
printf();
做练习方便后续使用;对链表进行查找,并将查找到的值构建一个新的链表;链表的转置;具体代码如下:
#include<stdio.h>
#include<stdlib.h>
struct node //定义结构体
{int data; struct node *next;
};
void print_data(struct node *inc) //封装函数做打印用
{printf("data = %d\n",inc->data);
}
void traverse(struct node *inc, void(*print)(struct node *)) //遍历链表并打印
{while(inc){print(inc);inc = inc->next;}
}
void insertHead(struct node **inc, int n) //头插法
{struct node *tmp = malloc(sizeof(struct node));tmp->data = n;tmp->next = *inc;*inc = tmp;
}
void insertTail(struct node **inc, int n) //尾插法
{struct node *tmp = malloc(sizeof(struct node));tmp->data = n;tmp->next = NULL;while(*inc){inc = &(*inc)->next;}*inc = tmp;
}
struct node *findNode(struct node **inc, int goal) //链表查找,并把查找到的值,存入新的链表中
{struct node *newlist = NULL; //新的链表struct node *tmp = *inc; //中间节点接收传入的值struct node *pre; //上一个节点struct node *cur; //当前节点while(tmp->next){if(goal == tmp->next->data){pre = tmp;cur = tmp->next;tmp->next = cur->next;cur->next = newlist;newlist = cur;}else if(goal == tmp->data){*inc = (*inc)->next;tmp->next = newlist;newlist = tmp;tmp = *inc;}else{tmp = tmp->next;}}return newlist;
}
void transNode(struct node **inc)
{struct node *cur = *inc;struct node *pre = NULL;struct ndoe *tmp;while(*inc){tmp = cur->next;cur->next = pre;pre = cur;cur = tmp;}*inc = pre;
}
int main()
{struct node *p = NULL;insertHead(&p,10);insertHead(&p,20);insertHead(&p,10);insertHead(&p,30);insertHead(&p,10);insertHead(&p,40);printf("_____create list_____\n");traverse(p,print_data);printf("_____old list_____\n");struct node *ret = findNode(&p, 10);traverse(p,print_data);printf("_____new list_____\n");traverse(ret,print_data);return 0;
}
- 执行结果如下:
C语言 链表创建及操作相关推荐
- 使用C语言链表创建学生信息并且将信息打印输出
C语言文章更新目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分 ...
- C语言链表的删除操作
记录学习的第13天 今天,复习一下链表的删除节点操作 由于之前已经说过动态链表的实现,所以就不再说了: 码来!(剑来!) 1. 先创建结构体并且创建索引指针: struct student{int d ...
- C语言链表-创建链表并且从键盘输入赋值
链表是C语言里面学习比较困难的一部分内容,下面这个例子就演示了创建一个链表并且从输入端赋值,希望对大家有用. #include <stdio.h> #include <stdlib. ...
- c语言链表创建递归,递归创建二叉树c语言实现+详细解释
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 void CreatBiTree(BiTree T) { char a; scanf("%c",&a); if(a=='@') ...
- (C++版)链表(一)——实现单向链表创建、插入、删除等相关操作
http://blog.csdn.net/fisherwan/article/details/25557545 前段时间用C语言实现了链表的相关操作,但是发现当时挺清楚的,过了一段时间又忘的差不多了, ...
- C 语言 链表的创建与打印
C 语言 链表的创建与打印 /* 包含的头文件 */#include <stdio.h>#include <stdlib.h>/* 定义一个表示链表的结构体指针 */struc ...
- C语言单链表创建(基础)
最近在刷题重温C语言的基础知识.关于单链表的创建还有一些不懂,参考了网上的代码,做一下笔记. 1.单链表的创建与赋值 #include <stdio.h> #include <std ...
- 数据结构单链表的基础操作(C语言)
效果如图: 代码及详情如下:(文末总结) 目录 //主函数 //菜单 //创建链表 //插入结点 //删除结点 //查找结点 //链表长度 //打印链表 //清空链表 //逆置链表 //删除偶数元素结 ...
- C语言实现创建有序链表
C语言实现创建有序链表 节点结构 //链表 struct node {int data;node *next; }; 插入函数(有序) //链表中插入节点(保持链表升序关系) node *insert ...
最新文章
- AAAI2021 | 图神经网络最新进展解读
- OS / Linux / 文件描述符以及 file 结构体
- 05-iOS蓝牙开发总结
- ElasticSearch搜索引擎:常用的存储mapping配置项 与 doc_values详细介绍
- Redis 如何处理已经过期的数据?
- jquery ajax 调用webservice以及跨域问题
- 小白学测试(基础知识)
- docker多个mysql实例_Docker创建运行多个mysql容器的方法示例
- mPaas集成项目、新建mPaaS项目
- Spring源码下载及构建技巧
- 网工必知 | 什么叫一层交换机,二层交换机,三层交换机?
- 入职要求提供上家公司的工资银行流水?
- 华为云sql工程师评测答题[青铜+白银]
- 媒体播控系统、信息发布系统 使用说明
- 2021桂林市高考一调成绩查询,2021年广西桂林市高考化学一调试卷.docx
- 【机器学习】多项式回归案例五:正则惩罚解决过拟合(Ridge回归和Lasso回归)
- Java编程:Java里的协程
- 网易我的世界服务器加载无响应,我的世界网易版开始游戏没反应
- iphone版 天行skyline_苹果再迎大版本更新、iOS13.4正式版推送!这次iPhone可以当车钥匙...
- Java 9 - 说说响应式流
热门文章
- 你所未曾了解的大数据:人为力量
- 微信云开发云数据库,数组中添加对象,修改数组中对象,删除数组中对象
- 移动端(微信)页面 不回弹
- 服务器开关电源型号ab和sb,SB21150AB 开关电源的PWM调整电流上升率
- php 常驻内存数据,EasyTask: PHP常驻内存定时任务定时器,(PHP resident memory timer, scheduled tasks)...
- 微信小程序开发入门(连载)—— 微信公众平台配置
- 企业内容管理技术与应用,第 1 章
- osgearth_geodetic_graticule--经纬网
- 创新设计糕点品牌推广策划书简约PPT模板
- 2022-07-14 第九组 韩文清