建立一个单链表,并删除链表中值为W的元素
#include<iostream>
#include<algorithm>
#include<string.h>
#include<stdio.h>
#include<malloc.h>
using namespace std;
typedef struct node
{
int data;
struct node *next;//指向类型完全相同的指针
int len;
} Lnode,*Linklist;
//一个是结构体类型,一个是结构体指针类型
int n,tmp;
Linklist head,p,q;
Lnode *creat_L(int n)
{
head=(Linklist)malloc(sizeof(Lnode));//建立头节点
head->next=NULL;//把头节点置为空
p=head;//结构体指针负责连接链表
int tmp;
p->len=n;
while(n--)
{
scanf("%d",&tmp);
q=(Linklist)malloc(sizeof(Lnode));//q负责分配空间和与p进行连接
q->data=tmp;//把数据域赋值
q->next=NULL;//其设置为空
p->next=q;//再连接这个新的节点
p=q;//更新p,把p进行移动
}
return head;
}
void print_L(Linklist head)
{
Linklist s=head->next;//头节点为空值
printf("%d\n",head->len);
while(s!=NULL)
{
if (s->next!=NULL){
printf("%d ",s->data);
}else{
printf("%d\n",s->data);
}
s=s->next;//链表的移动
}
}
void del(Linklist head,int w)
{
Linklist s=head;//设置为头节点
Linklist tmp;//需要设置一个新的节点,这样就能比较容易的实现删除
while(s!=NULL)
{
tmp=s->next;
if (tmp!=NULL && tmp->data==w)//这个值首先不为空,并且和w相等
{
s->next=tmp->next;//把s->next的值由tmp变成tmp->next
head->len--;//长度减一
free(tmp);
}
else
s=s->next;
}
return ;
}
int main()
{
Linklist head;
int n,w;
while(~scanf("%d",&n))
{
head=creat_L(n);
print_L(head);
scanf("%d",&w);
del(head,w);
print_L(head);
}
return ;
}
/*
10
56 25 12 33 66 54 7 12 33 12
12
*/
建立一个单链表,并删除链表中值为W的元素的更多相关文章
- 链表:删除链表中重复的结点(java实现)
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...
- 第18题:在O(1)时间删除链表结点+删除链表中重复的节点
题目描述:题目描述在O(1)时间删除链表结点 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点. 考查创新编程能力. 思路: 1.如果从头到尾遍历,时间O(n) 2.如果将待删 ...
- [剑指offer]6.从尾到头打印链表+18.删除链表节点
链表 6.从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 方法一 迭代 创建空列表res,将链表值head.val依次存进res,返回翻转后的res 代码 cl ...
- 链表问题----删除链表的中间节点和a/b处的节点
删除链表的中间节点和a/b处的节点 对于给定一个链表的头节点head,实现删除链表的中间节点的函数. 例如 不删除任何节点: 1->2,删除节点1 1->2->3,删除节点2 1-& ...
- 19. [链表][双指针]删除链表的倒数第N个节点
19. 删除链表的倒数第N个节点 方法一:哨兵节点+快慢指针 在本题中,快慢指针的用法为:让快指针先走几步,步数由 \(n\) 决定. 使用哨兵节点的理由是为了避免删除节点为头结点引发的空指针异常. ...
- leetcode-19:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * Lis ...
- LeetCode -- 删除链表中值为k的元素
本题目比較直接,一次遍历遇到匹配的元素直接删除(通过n.next = n.next.next)就能够了,仅仅是须要考虑到:1.首节点的情况2.末节点的情况 下面为实现: public ListNode ...
- 更好列表页中一个航班.先unset删除数组中一个键值对,再追加,最后按键排序
<?php $arr = array( '0' => array('item' => array( 'aa' => 'aaa', 'bb' => 'bbb' )), '1 ...
- 如何正确遍历删除List中的元素(普通for循环、增强for循环、迭代器iterator、removeIf+方法引用)
遍历删除List中符合条件的元素主要有以下几种方法: 普通for循环 增强for循环 foreach 迭代器iterator removeIf 和 方法引用 其中使用普通for循环容易造成遗漏元素的问 ...
随机推荐
- MySQL常用命令(二)
1.索引分类 1.普通索引 2.唯一索引 3.主键索引 4.外键索引2.普通索引(index) 1.使用规则 1.一个表中可以有多个index字段 2.字段的值可以有重复,也可以为NULL值 3.经常 ...
- Thinkphp框架中自定义修改success和error页面
Thinkphp框架中自定义修改success和error页面 Thinkphp框架的默认success和error太难看,可以自定义设置,步骤如下: (注意:TP原框架中的success跳转有问题, ...
- ubuntu 打开eclipse出现A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be ... 解决方法(转载)
原创作者:http://www.cnblogs.com/jerome-rong/archive/2013/02/19/2916608.html Java RunTime Environment (JR ...
- 《Java大学教程》—第21章 高级案例研究
21.3 需求:P510用例模型(use case model):用例图(use case diagram).用例(use case).行为说明(behaviour specification) ...
- CSS 浮动(float)与定位(position)
一.浮动 1.三个属性:left.right.none. 2.特点:容易造成父项塌陷,故在父项需要清除浮动 3.父项塌陷现象 4.父项塌陷解决方案(建议使用):清除浮动 .parent:after{ ...
- Mariadb Redis 的配置使用
Mariadb Mysql 的配置使用 CentOS 7 Mariadb 的学习 在linux上安装软件的方式 yum安装 在线搜索rpm格式的软件包,进行自动的依赖关系处理,下载,安装 (阿里云 ...
- 设计模式のBuilderPattern(创建者模式)----创建模式
一.产生背景 要组装一台电脑,它的组装过程基本是不变的,都可以由主板.CPU.内存等按照某个稳定方式组合而成.然而主板.CPU.内存等零件本身都是可能多变的.将内存等这种易变的零件与电脑的其他部件分离 ...
- 【angularjs】使用angular搭建项目,滚动距离
常用方法 滚动到顶部:$ionicScrollDelegate.scrollTop();或者$ionicScrollDelegate.$getByHandle('视图句柄').scrollTop(); ...
- pytorch例子学习——NEURAL TRANSFER USING PYTORCH神经迁移
参考:https://pytorch.org/tutorials/advanced/neural_style_tutorial.html 具体的理论就不解释了,这里主要是解释代码: ⚠️使用的是pyt ...
- PyCharm 中使用 Pylint 控制代码质量
1) Pylint安装 - Windows下: 直接在 cmd 下使用 pip install pylint 即可(如果 pip 不可用,首先安装最新版 Python,会默认安装 pip,或者找到 p ...