链表(1)
来源:互联网 发布:hibernate访问数据库 编辑:程序博客网 时间:2024/06/04 19:05
一、有一个整数val,如何在节点值有序的环形链表中插入一个节点值为val的节点,并且保证这个环形单链表依然有序。
给定链表的信息,及元素的值A及对应的nxt指向的元素编号同时给定val,请构造出这个环形链表,并插入该值。
测试样例:
[1,3,4,5,7],[1,2,3,4,0],2
返回:{1,2,3,4,5,7}
struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};class InsertValue {public: ListNode* insert(vector<int> A, vector<int> nxt, int val) { //如果A为空,插入后的结点,自己指向自己 if(A.size()==0){ ListNode *node=new ListNode(val); node->next=node; return node; } //A不为空,创建一个链表 ListNode *head=new ListNode(A[0]); ListNode *h1=head; for(int i=1;i<A.size();i++){ h1->next=new ListNode(A[i]); h1=h1->next; } h1->next=NULL; //从头结点开始寻找 ListNode *pre=head,*cur=head->next; //如图val小于头结点的数据域,将结点插入到头结点之前,并令插入的结点为头结点 if(pre->val>=val){ ListNode *node=new ListNode(val); node->next=head; head=node; return head; } //如果结点cur不为空,并且val在结点pre和cur的数据域之间,将结点插入结点pre和cur之间 while(cur!=NULL){ if(pre->val<=val&&val<=cur->val){ ListNode *node=new ListNode(val); pre->next=node; node->next=cur; break; } pre=pre->next; cur=cur->next; } //如果结点cur为空结点,将val插入到结点pre之后 if(cur==NULL){ ListNode *node=new ListNode(val); pre->next=node; node->next=NULL; } return head; }};
二、实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。
给定带删除的头节点和要删除的数字,请执行删除操作,返回删除后的头结点。链表中没有重复数字
struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};class Remove {public: ListNode* removeNode(ListNode* pHead, int delVal) { //第一种情况:删除的节点是头节点 if(pHead->val == delVal){ ListNode *node = pHead->next; pHead->next = NULL; return node; } ListNode *pre = pHead; ListNode *cur = pHead->next; while(cur != NULL) { //如果要删除的值为cur if(cur->val == delVal) { //就用cur的下一个值去覆盖当前值 pre->next = cur->next; cur->next = NULL; } pre = pre->next; cur = cur->next; } return pHead; }};
阅读全文
0 0
- 链表(1)
- 数据结构-链表(1)
- 链表(1)
- 数据结构(1)-链表
- 浅谈C链表(1)
- 链表(一):单链表1
- 数据结构学习(1)-链表
- 链表(数1退3)
- C 算法精介----链表(1)
- C 算法精介----链表(1)
- 链表(1)----单链表基本操作
- 面试专题1----------链表(单链表)
- C++学习平时作业(1)--链表
- 数据结构与算法--链表(1)
- 链表1
- 链表1
- 链表1
- 链表(1)
- GB2312简体中文编码表
- 运行三年,日活百万的微服务数据分析架构
- LeetCode 69 Sqrt(x)
- 怎么修改mysql的最大连接数
- 【腾讯TMQ】iOS电量测试实践
- 链表(1)
- Python接口测试--点滴
- bootstrap-slider使用方法
- 2017.10.26 LeetCode 581. Shortest Unsorted Continuous Subarray
- git 合并分之内的指定文件
- mybatis的一对一,一对多的关系映射配置及性能分析(延迟加载)
- window.open被拦截问题及解决方法
- Servlet 学习笔记
- Linq之Expression进阶