博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
向有序的环形单链表中插入新节点
阅读量:5887 次
发布时间:2019-06-19

本文共 2023 字,大约阅读时间需要 6 分钟。

【说明】:

  本文是左程云老师所著的《程序员面试代码指南》第二章中“向有序的环形单链表中插入新节点”这一题目的C++复现。

  本文只包含问题描述、C++代码的实现以及简单的思路,不包含解析说明,具体的问题解析请参考原书。

  感谢左程云老师的支持。

【题目】:

  一个环形单链表从头节点 head 开始不降序,同时由最后的节点指向头节点。给定这样的一个环形单链表的头节点 head 和一个整数 num,请生成节点值为 num 的新节点,并插入到这个环形链表中,保证调整后的链表依然有序。

 【思路】:

  解法:注意头节点的处理

【编译环境】:

  CentOS6.7(x86_64)

  gcc 4.4.7

 【实现】:

  实现及测试代码:

1 /* 2  *文件名:list_insert.cpp 3  *作者 4  *摘要:向有序的环形链表中插入新节点 5  */ 6  7 #include 
8 9 using namespace std;10 11 class Node12 {13 public:14 Node(int data)15 {16 value = data;17 next = NULL; 18 }19 public:20 int value;21 Node *next;22 };23 24 Node* insertNum(Node *head,int num)25 {26 Node *n = new Node(num);27 if(NULL == head)28 {29 n->next = n;30 return n;31 }32 33 Node *pre = head;34 Node *cur = head->next;35 while(cur != head)36 {37 if(pre->value <= num && cur->value >= num)38 break;39 pre = cur;40 cur = cur->next;41 }42 pre->next = n;43 n->next = cur;44 return head->value < num ? head : n;45 }46 47 //打印环形链表48 void printList(Node *head)49 {50 Node *pre = head;51 Node *cur = head->next;52 while(cur != head)53 {54 cout << pre->value << " ";55 pre = cur;56 cur = cur->next;57 }58 cout << pre->value << endl;59 }60 61 int main()62 {63 Node *head = NULL;64 Node *ptr = NULL;65 66 for(int i =1;i<4;i++)//构造链表67 {68 if(NULL == head)69 { 70 head = new Node(i);71 ptr = head;72 continue;73 }74 ptr->next = new Node(i);75 ptr = ptr->next; 76 }77 ptr->next = head; //环形链表78 79 cout << "Before insertion:" << endl;80 printList(head);81 cout << "After insertion:" << endl;82 head = insertNum(head,0);83 printList(head);84 return 0;85 }
View Code

 

注:

  转载请注明出处;

  转载请注明源思路来自于左程云老师的《程序员代码面试指南》。

转载于:https://www.cnblogs.com/PrimeLife/p/5448653.html

你可能感兴趣的文章
hutool读取和导出excel_Office文档操作(Hutool-poi)
查看>>
python messagebox显示到最前面_如何在打开MessageBox之前关闭ProgressDialog?
查看>>
多重采样和超级采样哪个流畅_蒙特卡洛方法-多重采样
查看>>
时序约束优先级_Vivado工程经验与各种时序约束技巧分享
查看>>
nginx win 启动关闭_windows下nginx启动与关闭的批处理脚本
查看>>
python中实参包括哪些_第50p,形参与实参,Python中函数的参数详解
查看>>
minio 并发数_MinIO 参数解析与限制
查看>>
eap wifi 证书_用openssl为EAP-TLS生成证书(CA证书,服务器证书,用户证书)
查看>>
mysql 应用程序是哪个文件夹_Mysql 数据库文件存储在哪个目录?
查看>>
mysql半同步和无损复制_MySQL半同步复制你可能没有注意的点
查看>>
mysql能看见表显示表不存在_遇到mysql数据表不存在的问题
查看>>
使用mysql实现宿舍管理_JSP+Struts2+JDBC+Mysql实现的校园宿舍管理系统
查看>>
mysql alter 修改字段类型_MySQL ALTER命令:删除,添加或修改表字段、修改字段类型及名称等...
查看>>
mysql中的事务和锁_MySQL - 事务和锁中的互斥?
查看>>
mysql statement讲解_Statement接口详解
查看>>
mysql_print_default_知识点:MySQL常用工具介绍(十 二)——实用程序my_print_defaults、perror...
查看>>
mysql怎么会报错_MySQL启动报错怎么办?
查看>>
mysql中常用动词_MySQL 常用
查看>>
mysql如何匹配_如何在mysql中匹配
查看>>
python编译exe用于别的电脑上_Python安装教程(推荐一款不错的Python编辑器)
查看>>