建立一个单链表,并删除链表中值为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循环容易造成遗漏元素的问 ...
随机推荐
- Echars鼠标点击事件多次触发
gChart.on('click', function (params) { if (params.componentSubType == "bar" && par ...
- List删除
使用for循环,倒序删除: ; i >= ; i--) { var item = list[i]; ") { list.Remove(item); } }
- Powershell批量安装SNMP服务
我要给node5-8的节点都安装snmp服务 如果不知道要安装的服务的名字,用get-windowsfeature 能显示出来所有的名字 Invoke-Command -ComputerName no ...
- python3+正则表达式爬取 猫眼电影
'''Request+正则表达式抓取猫眼电影TOP100内容''' import requests from requests.exceptions import RequestException i ...
- 百度地图和高德地图结合在web中的使用(二)
百度地图在web中的使用(二) 背景:在做一个关于地理位置字段时,初始位置使用百度地图获取时失败,获取的位置信息不准确,奈何产品说友商好使的啊,F12看后是采用的高德,所以在这采用高德地图获取初始位置 ...
- centOS7docker安装oracle
1.拉取oracle 11g 的镜像: 用root登陆服务器,输入下面的命令,拉取oracle 11g的镜像,有点大,6.8G多: docker pull registry.cn-hangzhou.a ...
- JavaScript -- 时光流逝(三):js中的 String 对象的方法
JavaScript -- 知识点回顾篇(三):js中的 String 对象的方法 (1) anchor(): 创建 HTML 锚. <script type="text/javasc ...
- redis常用命令及结构
##常用结构及命令: keys * #查询所有key randomkey #随机返回key type key #返回key的类型 exists key #判断key是否存在 del key1 key2 ...
- SQLServer数据表用法
数据表定义 数据表(或称表)是数据库最重要的组成部分之一,数据库中以表为组织单位存储数据,数据库只是一个框架,数据表才是其实质内容.数据库管理工具中可以显示数据库中的所有数据表,数据表是数据库中一个非 ...
- 详解javascript立即执行函数表达式(IIFE)
立即执行函数,就是在定义函数的时候直接执行,这里不是申明函数而是一个函数表达式 1.问题 在javascript中,每一个函数在被调用的时候都会创建一个执行上下文,在函数内部定义的变量和函数只能在该函 ...