从单链表中输出指定值的节点
2015-09-20 18:11
141 查看
描述
输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。
链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
详细描述:
本题为考察链表的插入和删除知识。
链表的值不能重复
构造过程(x->y表示x插在y的后面),例如
1 -> 2
3 -> 2
5 -> 1
4 -> 5
7 -> 2
最后的链表的顺序为 2 7 3 1 5 4
删除 结点 2
则结果为 7 3 1 5 4
知识点 链表,指针,结构体
运行时间限制 10M
内存限制 128
输入
1 输入链表结点个数
2 输入头结点的值
3 按照格式插入各个结点
4 输入要删除的结点的值
输出
输出删除结点后的序列
样例输入 5 2 3 2 4 3 5 2 1 4 3
样例输出 2 5 4 1
解答如下:
//SqLink.cpp
效果如下:
输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。
链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
详细描述:
本题为考察链表的插入和删除知识。
链表的值不能重复
构造过程(x->y表示x插在y的后面),例如
1 -> 2
3 -> 2
5 -> 1
4 -> 5
7 -> 2
最后的链表的顺序为 2 7 3 1 5 4
删除 结点 2
则结果为 7 3 1 5 4
知识点 链表,指针,结构体
运行时间限制 10M
内存限制 128
输入
1 输入链表结点个数
2 输入头结点的值
3 按照格式插入各个结点
4 输入要删除的结点的值
输出
输出删除结点后的序列
样例输入 5 2 3 2 4 3 5 2 1 4 3
样例输出 2 5 4 1
解答如下:
//SqLink.cpp
#include <stdio.h> #include <stdlib.h> struct ListNode { int m_nKey; ListNode* m_pNext; }; int insert(struct ListNode* head,int data[]){ struct ListNode *p=head,*q; while(p!=NULL){ if (p->m_nKey == data[1]) { q=(struct ListNode*)malloc(sizeof(struct ListNode)); q->m_nKey = data[0]; q->m_pNext = p->m_pNext; p->m_pNext = q; return 0; } p = p->m_pNext; } return 1; } //删除元素 struct ListNode* del(struct ListNode *head,int datadet) { struct ListNode *p=head,*q=NULL; while(p!=NULL){ //删除第一个结点 if (p==head && p->m_nKey==datadet) { if(p->m_pNext==NULL) return NULL; head = p->m_pNext; free(p); return head; } else if (p->m_nKey == datadet) { q->m_pNext = p->m_pNext; free(p); return head; } q=p; p = p->m_pNext; } return NULL; } void main() { //int n; int data[2],num=0,shu=0,num2=0; struct ListNode *LsNode = (struct ListNode*)malloc(sizeof(struct ListNode)); scanf("%d%d",&shu,&num2); LsNode->m_nKey=num2; LsNode->m_pNext=NULL; int j=0; for (j=0;j<shu-1;j++) { scanf("%d %d",&data[0],&data[1]); insert(LsNode,data); } scanf("%d",&num); LsNode=del(LsNode,num); while(LsNode!=NULL){ printf("%d ",LsNode->m_nKey); LsNode = LsNode->m_pNext; } printf("\n"); }
效果如下:
相关文章推荐
- 录制Android屏幕Gif的方法
- web应用和虚拟目录映射
- netbeans使用教程
- 周记 - 9.20
- 讲解surface 和surfaceview相关的东西很好
- 51 Free Data Science Books
- C语言 --- 函数指针(初级)
- NetBeans的使用
- 基于UDP的聊天程序
- 基于UDP的聊天程序
- 初学NetBeans
- Linux中的孤儿进程
- 安卓ContentProvider的理论知识
- “微信之父”张小龙:华中科技大学走出来的“独孤大侠”
- Java编译与运行的区别
- [LeetCode]First Bad Version
- PHP内核探索:新垃圾回收机制说明
- Java静态内部类、匿名内部类、成员式内部类和局部内部类
- 指针逆序数组
- [笔记][Java7并发编程实战手册]6.并发集合