建立一个单链表,并删除链表中值为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循环容易造成遗漏元素的问 ...
随机推荐
- [转载]Windows 2003 R2 SP2 VOL 企业版(简体中文)
Windows 2003 R2 SP2 VOL 企业版(简体中文) 要是这个的话,分享个电驴的下载连接吧(可以复制后用快车和迅雷直接下)32位版CD1:SHA1值:d0dd2782e9387328eb ...
- EF Code First列名 'Discriminator' 无效的问题
新建了一个类继承EF Model类,运行报错 EF Code First列名 'Discriminator' 无效 EF会把项目中在DbContext中引用的所有的Model类及这些Model类对应 ...
- iOS图片存在本地、再从本地获取图片
图片存在本地.再从本地获取图片 //将图片保存到本地 + (void)SaveImageToLocal:(UIImage*)image Keys:(NSString*)key { NSUser ...
- Unity与安卓开发的一些路径知识
APK安装之后找不到路径 公司的测试机(安卓)基本都是不带SD卡的. APK在安卓手机上安装之后,使用手机助手类的软件打开文件管理,打开 内置SDK卡/Android/data/ 在这个目录下却发现 ...
- 缺少 mysqli 扩展。请检查 PHP 配置。
安装了新的lamp,想打开数据库,结果出现了这种错误: phpMyAdmin - 错误缺少 mysqli 扩展.请检查 PHP 配置. <a href="Documentation.h ...
- python——作用域之LEGB规则
1 变量的作用域 Python是静态作用域,也就是说在Python中,变量的作用域源于它在代码中的位置:在不同的位置,可能有不同的命名空间.命名空间是变量作用域的体现形式. 2 LEGB各自代表的含义 ...
- Java教程01-基础语法
目录 1. 基本概念 1.1. 环境变量 Path环境变量的作用->寻找命令 classpath变量的作用->寻找类文件 1.2. JDK里面有什么? 1.3. 什么是JRE? 2. Ja ...
- 让python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE等请求(新方法)
通过上篇博文的方法处理后,进入代码调试后发现ajax获取不了服务器端返回的数据,度娘后发现原来AJAX的OPTIONS请求方式是状态类型查询,即向服务器提交信息后不返回任何信息,只将执行状态(200状 ...
- 用static声明外部变量与内、外部函数
1.用static声明外部变量 若希望某些外部变量只限于被本文件引用,而不能被其他文件引用,可以在定义外部变量时加一个static声明. 例:(file1.c) #include <stdafx ...
- 【vue】使用localStorage解决vuex在页面刷新后数据被清除的问题
通常,我们在使用vue编写页面时,会需要使用vuex在组件间传递(或者说共同响应)同一个数据的变化.例如:用户的登录信息. 下面,我们使用传递用户登录信息的例子来一步步解决这个问题. 首先,我们的第一 ...