单链表是笔试以及面试手写代码中常考的数据结构之一。下面实现了单链表的常见操作:创建单链表、删除节点、打印单链表(包括正向打印以及逆向打印)、反转单链表、找出单链表的倒数第K个节点、合并两个有序单链表等操作。
代码(C++):
- //笔试面试单链表常用操作编程实现
- #include
- #include
- #include
- using namespace std;
- //单链表节点数据结构定义
- typedef struct link_node_s{
- int m_val;
- struct link_node_s *next;
- }link_node_t,*link_list_t;
- //函数:创建单链表(头插法)
- link_list_t create_linklist(int *a,int n);
- //函数:打印单链表(从头到尾)
- void print_linklist(link_list_t head);
- //函数:打印单链表(从尾到头)
- void print_linklist_reverse(link_list_t head);
- //函数:新建链表节点
- link_list_t creart_linknode(int val);
- //函数:删除链表中的某一个节点(前提条件:该节点一定存在)
- //性能要求:在O(1)时间复杂度内实现
- void delete_node_exist(link_list_t *head,link_list_t node_deleted);
- //函数:删除链表中数据值等于给定值的节点
- void delete_node(link_list_t *head,int val);
- //函数:获得链表中的倒数第K个节点
- link_list_t get_kth_node(link_list_t head,int k);
- //函数:反转链表
- link_list_t reverse_linklist(link_list_t head);
- //函数:合并两个已排序的链表(递归方法实现)
- link_list_t merge_linklist_recursive(link_list_t head1,link_list_t head2);
- int main(){
- const int num1 = 8;
- const int num2 = 10;
- int *a = new int[num1];
- int *b = new int[num2];
- int *a_sorted = new int[num1];
- int *b_sorted = new int[num2];
- srand(1);
- for(int i = 0;i
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?
立即登录/注册


微信扫码登录