从单向链表中删除指定值的节点
2015-09-11 16:17
190 查看
输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。
链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
详细描述:
本题为考察链表的插入和删除知识。
链表的值不能重复
构造过程,例如
1 -> 2
3 -> 2
5 -> 1
4 -> 5
7 -> 2
最后的链表的顺序为 2 7 3 1 5 4
删除 结点 2
则结果为 7 3 1 5 4
输入:
1 输入链表结点个数
2 输入头结点的值
3 按照格式插入各个结点
4 输入要删除的结点的值
输出删除结点后的序列
样例输入:
样例输出:
2 5 4 1
链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
详细描述:
本题为考察链表的插入和删除知识。
链表的值不能重复
构造过程,例如
1 -> 2
3 -> 2
5 -> 1
4 -> 5
7 -> 2
最后的链表的顺序为 2 7 3 1 5 4
删除 结点 2
则结果为 7 3 1 5 4
输入:
1 输入链表结点个数
2 输入头结点的值
3 按照格式插入各个结点
4 输入要删除的结点的值
输出删除结点后的序列
样例输入:
5 2 3 2 4 3 5 2 1 4 3
样例输出:
2 5 4 1
#include<iostream> #include <cstdlib> using namespace std; typedef struct ListNode { int m_nKey; ListNode* m_pNext; }ListNode; ///创建链表,返回头结点 ListNode* CreatList() { unsigned int n; cin>>n; ListNode *head=NULL; ListNode *p=NULL; int data;///待插入的数 int num;///插入此数的后面 cin>>data; p = new ListNode;///插入根节点 p->m_nKey=data; p->m_pNext = NULL; head = p; n--; for(unsigned int i=0;i<n;i++) { cin>>data>>num; ListNode *p_find=head; ListNode *p_find_next=NULL; while(p_find!=NULL) { if(p_find->m_nKey == num) { p_find_next = p_find->m_pNext; p = new ListNode; p->m_nKey = data; p->m_pNext=p_find_next; p_find->m_pNext = p; break; } p_find = p_find->m_pNext; } } return head; } ListNode* DeleteNode(ListNode* head,int value) { ListNode *p=head; ListNode *q=NULL; if(p->m_nKey == value) { head=p->m_pNext; return head; } while(p!=NULL) { if(p->m_pNext->m_nKey == value) { q=p->m_pNext->m_pNext; p->m_pNext=q; return head; } p = p->m_pNext; } return NULL; } int main() { ListNode* p=NULL; int value; p = CreatList(); cin>>value; p = DeleteNode(p,value); while(p!=NULL) { cout<<p->m_nKey<<" "; p=p->m_pNext; } return 0; }
相关文章推荐
- VC/MFC CStatic 绘制一个时间选择控件
- POJ_1698_Alice's Chance(最大流)
- C#(U盘加载,卸载,拔出,插入,WM_DEVICECHANGE,WndProc,DBT_DEVICEARRIVAL,DBT_DEVICEREMOVECOMPLETE)
- 二、Android应用的界面编程(二)布局管理器
- pymssql使用记录--把文本内容存入字段
- js 模板
- 加载数据图标
- Java注解Annotation详解
- kexec相关阅读
- Codeforces Round #319 (Div. 2)B. Modulo Sum DP
- 清除android程序中的多余资源
- UIImageView 播放一组图片动画
- 给定一个01串(仅由‘ 0’或‘1’组成的字符串),现在想把这个数字串排序成“非递减”有序序列,请问至少需要多少次交换(任意两个位置交换)
- android 弹出选择框
- (小笔记) 禁止gridview上下拖动
- 基于交比不变性的太阳定位算法的研究
- H-Index ——Leetcode
- Ubuntu14.04台式机小米wifi
- FragmentTabHost 自定义
- 笔试题:求一个数的开方,如根号2