您当前的位置: 首页 >  面试

高校俱乐部

暂无认证

  • 4浏览

    0关注

    674博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

笔试面试常考数据结构-单链表常用操作编程实现

高校俱乐部 发布时间:2013-11-07 14:40:00 ,浏览量:4

单链表是笔试以及面试手写代码中常考的数据结构之一。下面实现了单链表的常见操作:创建单链表、删除节点、打印单链表(包括正向打印以及逆向打印)、反转单链表、找出单链表的倒数第K个节点、合并两个有序单链表等操作。

代码(C++):

[cpp] view plain copy print ?
  1. //笔试面试单链表常用操作编程实现  
  2. #include   
  3. #include   
  4. #include   
  5.   
  6. using namespace std;  
  7.   
  8. //单链表节点数据结构定义  
  9. typedef struct link_node_s{  
  10.     int m_val;  
  11.     struct link_node_s *next;  
  12. }link_node_t,*link_list_t;  
  13.   
  14. //函数:创建单链表(头插法)  
  15. link_list_t create_linklist(int *a,int n);  
  16.   
  17. //函数:打印单链表(从头到尾)  
  18. void print_linklist(link_list_t head);  
  19.   
  20. //函数:打印单链表(从尾到头)  
  21. void print_linklist_reverse(link_list_t head);  
  22.   
  23. //函数:新建链表节点  
  24. link_list_t creart_linknode(int val);  
  25.   
  26. //函数:删除链表中的某一个节点(前提条件:该节点一定存在)  
  27. //性能要求:在O(1)时间复杂度内实现  
  28. void delete_node_exist(link_list_t *head,link_list_t node_deleted);  
  29.   
  30. //函数:删除链表中数据值等于给定值的节点  
  31. void delete_node(link_list_t *head,int val);  
  32.   
  33. //函数:获得链表中的倒数第K个节点  
  34. link_list_t get_kth_node(link_list_t head,int k);  
  35.   
  36. //函数:反转链表  
  37. link_list_t reverse_linklist(link_list_t head);  
  38.   
  39. //函数:合并两个已排序的链表(递归方法实现)  
  40. link_list_t merge_linklist_recursive(link_list_t head1,link_list_t head2);  
  41.   
  42. int main(){  
  43.     const int num1 = 8;  
  44.     const int num2 = 10;  
  45.     int *a = new int[num1];  
  46.     int *b = new int[num2];  
  47.     int *a_sorted = new int[num1];  
  48.     int *b_sorted = new int[num2];  
  49.   
  50.     srand(1);  
  51.     for(int i = 0;i 
关注
打赏
1656064541
查看更多评论
立即登录/注册

微信扫码登录

0.0475s