zoukankan      html  css  js  c++  java
  • 【牛客】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 }
  • 相关阅读:
    JOIN条件限制对结果记录的影响
    什么是linux?
    什么是操作系统?
    Internship settled!
    Python dict 调试技巧 —— 利用YAML存储dict内容
    c++ 异常处理
    C#可空类型
    C# 异常处理
    C#值类型与引用类型
    C# 类类型
  • 原文地址:https://www.cnblogs.com/shixinzei/p/12673503.html
Copyright © 2011-2022 走看看