Remove the specified nodes in the linked list with dummy header

这篇具有很好参考价值的文章主要介绍了Remove the specified nodes in the linked list with dummy header。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

分数 20

作者 伍建全

单位 重庆科技大学

Please create a function with the prototype void removeNode(List L, int key). This function deletes all nodes from the linked list L where the data field is equal to key.If there are no nodes in the list where the data field is equal to key, the function should do nothing.

Structure description:

The node structure is shown below:

typedef struct ListNode {
    int data;
    struct ListNode *next;
} node;

typedef node* position;
typedef position List;

Function definition:

void removeNode(List L, int key);

The parameter L is a pointer to the dummy header. This function deletes all nodes from the linked list L where the data field is equal to key. If there are no nodes in the list where the data field is equal to key, the function should do nothing.

Test program example:

#include <stdio.h>
#include <stdlib.h>

typedef struct ListNode {
    int data;
    struct ListNode *next;
}node;

typedef node* position;
typedef position List;

void removeNode(List L, int key);

// The questioner has implemented the createList function.
// This function reads a series of positive integers separated by spaces
// and inserts them into a linked list using the head insertion method.
// Entering -1 indicates the end of input.
// creatgeList函数由题目提供,不需要在本题的答案中实现
List createList();
//Function show outputs the data field of each node in the linked list L.
// show函数由题目提供,不需要在本题的答案中实现
void show(List L);
// destroy函数由题目提供,不需要在本题的答案中实现
void destroy(List L);

int main(void)
{
    List L = createList();
    show(L);
    int key;
    scanf("%d", &key);
    removeNode(L, key);
    show(L);
    destroy(L);
    return 0;
}

Input Specification:

There are two lines of input. The first line is a series of positive integers, and entering -1 indicates the end of the input. The second line contains one integer, which represents the number that needs to be deleted from the linked list.(输入有两行。第1行是一系列正整数,输入-1表示输入结束。第2行有1个整数,表示需要从链表中删除的数。)

Output Specification:

There are two lines of output. The first line is the linked list before the element is deleted; the second line is the linked list after the deletion.

Sample Input :

10 20 30 40 50 40  40 60 -1
40

Sample Output :

60 40 40 50 40 30 20 10 
60 50 30 20 10 

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

C程序如下:文章来源地址https://www.toymoban.com/news/detail-855563.html

// 定义一个函数,用于从链表中删除具有特定键值的节点  
void removeNode(List L, int key){  
    // 定义两个指向节点的指针,p和q  
    node *p, *q;  
    // 将p指向链表的头节点  
    p = L;  
    // 将q指向头节点的下一个节点,即链表的第一个实际数据节点  
    q = p->next;  
    // 当q不为NULL时,即链表中还有节点时,循环继续  
    while(q != NULL){  
        // 如果q所指向的节点的数据等于要删除的键值  
        if(q->data == key){  
            // 将p的next指针指向q的下一个节点,从而跳过q节点  
            p->next = q->next;  
            // 释放q节点所占用的内存  
            free(q);  
            // 将q重新指向p的下一个节点,继续检查下一个节点  
            q = p->next;  
        }  
        // 如果q所指向的节点的数据不等于要删除的键值  
        else{  
            // 将p移动到q的位置,即p指向当前检查的节点  
            p = q;  
            // 将q移动到下一个节点,准备检查下一个节点  
            q = q->next;  
        }  
    }  
}

到了这里,关于Remove the specified nodes in the linked list with dummy header的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法: 移除单链表的倒数第N个节点 19. Remove Nth Node From End of List

    Given the head of a linked list, remove the nth node from the end of the list and return its head. Example 1: Example 2: Example 3: Constraints: The number of nodes in the list is sz. 1 = sz = 30 0 = Node.val = 100 1 = n = sz Follow up: Could you do this in one pass? 该方法采用了两次遍历链表的方法。首先,它计算链表的总长度,然后通

    2024年02月13日
    浏览(46)
  • Android:Namespace not specified. Please specify a namespace in the module‘s build.gradle file like

    问题: 接上文: 【解决方案记录】Could not find com.android.tools.build:gradle:8.0. 在修改完对应的文件之后,并将compileSdk 版本号改为33后, 重新导入gradle项目,弹出错误: 在多次修改项目目录下的build.gradle文件无效后,我通过参考链接中的描述修改了app目录下的build.gradle文件 在

    2024年02月10日
    浏览(38)
  • 导入module报错Namespace not specified. Please specify a namespace in the module‘s build.gradle file like

    解决办法:打开导入的module的build:gradle dependencies { 。。。 } 把 namespace \\\'com.example.XXX’和 applicationId \\\"com.example.XXX\\\"改成 被导入的project的 namespace \\\'com.example.XXX’和 applicationId “com.example.XXX” 一般也会报版本不对,也把 compileSdk 33 targetSdk 33 minSdk 16也改成 被导入的project的 同款 -

    2024年02月11日
    浏览(71)
  • 【redis已解决】Warning: no config file specified, using the default config. In order to specify a config

    Warning: no config file specified, using the default config. In order to specify a config file use /redis-6.2/redis-server /path/to/redis.conf 点击这个报错 表示没有指定配置文件,使用默认配置。要指定配置文件,请使用redis-server /path/to/redis.conf 启动成功 (如果你怕麻烦就使用批处理) redis-server.exe redis

    2024年02月16日
    浏览(63)
  • Linux服务器报错解决The git executable must be specified in one of the following ways: - be included in

    在利用深度学习服务器,利用Xshell进入端口,想要运行深度学习项目时碰到了以下错误: Traceback (most recent call last):   File \\\"/opt/conda/envs/[yolov5_SE]/lib/python3.9/site-packages/git/__init__.py\\\", line 166, in module     refresh()   File \\\"/opt/conda/envs/[yolov5_SE]/lib/python3.9/site-packages/git/__init__.py\\\", line

    2024年02月02日
    浏览(46)
  • Leetcode 1367. Linked List in Binary Tree (二叉树好题)

    Linked List in Binary Tree Medium Given a binary tree root and a linked list with head as the first node. Return True if all the elements in the linked list starting from the head correspond to some downward path connected in the binary tree otherwise return False. In this context downward path means a path that starts at some node and goes downwards. Exampl

    2024年01月25日
    浏览(47)
  • git pull Your configuration specifies to merge with the ref ‘refs/heads/xxxx‘ from the remote, but n

    Your configuration specifies to merge with the ref ‘refs/heads/xxxx’ from the remote, but no such ref was fetched.) 1.主要是因为网页上仓库fork别人的,更新了就没了分支,但是本地还有 2.需要切换到丢失的分支下,需要先解锁: 3.然后在执行git pull会有提示: 但是这样问题还不能根本性的解决:

    2024年02月04日
    浏览(55)
  • 【mysql】[ERROR] --initialize specified but the data directory has files in it. Aborting.

    执行 mysqld --initialize [ERROR] --initialize specified but the data directory has files in it. Aborting.   [错误]--指定了初始化,但数据目录中有文件。正在中止 清除掉 数据文件。 对应的目录 : /usr/local/mysql/data 查看现在目录内容: 把这些都删除掉。 然后重新执行: mysqld --initialize 可以正常执

    2024年01月16日
    浏览(43)
  • MySQL启动时出现initialize specified but the data directory has files in it. Aborting问题

    你是否遇见以下问题在MySQL重启时出现问题,报出了以下的错误,现在我将告诉你遇见以下错误怎么处理。 当出现了上面的错误,我们可以看出它提供了两条命令“systemctl status mysqld.service”和“journalctl -xe”来帮助我们来查看错误的详情。 使用“systemctl status mysqld.service”命

    2024年02月16日
    浏览(38)
  • The minCompileSdk (33) specified in a dependency‘s AAR metadata (META-INF/com/android/build/gradle/a

    android studio 编译的报错提示: 报错信息中很关键的三个: 先看一下第一个报错信息: 意思是 CompileSdk 最小必须是 33 ,并且 recyclerview版本1.3.0-beta02 ,为什么和我的 CompileSdk 29 和 recyclerview版本1.1.0 不一样呢? 我的 recyclerview版本1.1.0 怎么查看:打开看看布局中 androidx.recycler

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包