• 【牛客】KiKi学习了结构体和指针


    题目链接:https://www.nowcoder.com/practice/0ab593ca56b1476eb05b1ff848fd7fcc?tpId=107&tqId=33419&rp=7&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking&tPage=7

    题目描述

    KiKi学习了结构体和指针,他了解了结构体类型可以定义包含多个不同类型成员,而指针本质是内存地址,是引用数据的另外一种方式。现在他想将多个输入的数据通过结构体和指针的方式连接在一起,形成一个单向链表,即:每个结点是结构体类型,包括整型数据成员(data)和结构体指针类型成员(next),每个结点的指针部分指向下一个输入的结点。具体建立过程如下:先输入n个整数,按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据m,将单链表中的值为m的结点全部删除。输出删除后的单链表信息。
     

    输入描述:

    包括三行:
    第一行输入数据个数n (3≤n≤100);

    第二行依次输入n个整数,用空格分隔;

    第三行输入欲删除数据m。

    输出描述:

    包括两行:

    第一行输出完成删除后的单链表长度;

    第二行依次输出完成删除后的单链表数据。

    示例1

    输入

    复制
    5
    1 2 2 3 4
    2

    输出

    复制
    3
    1 3 4
     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 struct ListNode
     4 {
     5     int val;
     6     struct ListNode *next;
     7 }*newlist;
     8 int main()
     9 {
    10     int n;
    11     scanf("%d",&n);
    12     int i,x;
    13     struct ListNode *nl=(struct ListNode*)malloc(sizeof(struct ListNode));
    14     nl->next=NULL;
    15     struct ListNode *q=nl,*tmp,*p;
    16     for(i=0;i<n;i++){
    17         scanf("%d",&x);
    18         tmp=(struct ListNode*)malloc(sizeof(struct ListNode));
    19         tmp->next=NULL;
    20         tmp->val=x;
    21         q->next=tmp;
    22         q=tmp;
    23     }
    24     int m;
    25     scanf("%d",&m);
    26     q=nl->next;
    27     struct ListNode *newl=(struct ListNode*)malloc(sizeof(struct ListNode));
    28     newl->next=NULL;
    29     int cnt=0;
    30     p=newl;
    31     while(q){
    32         if(q->val!=m){
    33             tmp=(struct ListNode*)malloc(sizeof(struct ListNode));
    34             tmp->next=NULL;
    35             tmp->val=q->val;
    36             p->next=tmp;
    37             p=tmp;
    38             cnt++;
    39         }
    40         q=q->next;
    41     }
    42     printf("%d
    ",cnt);
    43     q=newl->next;
    44     while(q){
    45         cnt--;
    46         if(cnt==0) printf("%d
    ",q->val);
    47         else printf("%d ",q->val);
    48         q=q->next;
    49     }
    50 }
  • 相关阅读:
    MYSQL性能优化的最佳20+条经验
    MySQL性能分析工具之PROFILE
    理解事务的4种隔离级别
    二进制中1的个数
    滑动窗口最大值
    字符流中第一个不重复字符
    字符串转化为整数
    java字符,字符串,数字之间的转换
    java中数组输出的方式
    java基础知识(1)
  • 原文地址:https://www.cnblogs.com/wydxry/p/12673503.html
Copyright © 2020-2023  润新知