e555666ee 2023-03-30 18:42 采纳率: 37.5%
浏览 20

关于#c语言#的问题,如何解决?

请问:为什么运行不了呀?代码问题是:
统计单链表中偶数位序的元素和并输出元素值。


#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
typedef struct Node
{
    int data;
    struct Node*next;
}Node,*LinkList;
void Initlist(LinkList &L)
{
    L=(Node*)malloc(sizeof(Node));
    L->next=NULL;
}
void Creatlist(LinkList &L,int a[100],int n)
{
L= (Node *)malloc(sizeof(Node));
    L->next = NULL;   
 
    LinkList p;  
    for (int i = 0; i < n; i++) {
        p = (LinkList )malloc(sizeof(LinkList));  
        p->data = a[i];   
        p->next = L->next;   
        L->next=p;

    }
}
int deleteList (LinkList &L,int m)
{
    if(m<1)
    {
        printf("error\n");
        return 0;
    }
    int i=0;
    LinkList q,p;
    while(q!=NULL&&i<m)
    {
        i++;
        q=q->next;
    }
    p=q->next;
    q->next=p->next;
    free(p);
    return 1;
}
void OutputList(LinkList &L)
{
    LinkList s;
    s=L->next;
    while(s)
    {
        cout<<s->data<<' ';
        s=s->next;
    }
}
int main()
{
    int n,m,a[100];
    cin>>n;
    LinkList L;
    Initlist(L);
    Creatlist(L,a,n);
    cin>>m;
    if(deleteList(L,m))
    OutputList(L);
    if(L->next-NULL)
    cout<<"null";
    return 0;
}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-03-30 20:37
    关注
    • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/224815
    • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:钢条切割问题,如果每次切割还要付出固定成本c和输出切割方案,解决思路和示例代码
    • 除此之外, 这篇博客: 关于C语言中逆序输出以及判断回文数题目的解法笔记中的 一、如何计算用户输入的数是几位数? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    •   在做逆序输出以及判断回文数题目之前,先做下这道题,如何计算用户输入的数是几位数呢?

        思路:假设用户输入的数据是四位数1234
        我们知道,1234%10=4,我们就取到了用户输入数值中末位数字4这个数字,这时候我们就知道用户输入的数至少是个位数了(废话)。
        我们还知道,1234/10=123,我们可以利用他把用户输入的数值更新,更新之后,猜到没,我们再继续走步骤一,如果走得动,我们又知道用户输入的数值至少是两位数了。
        就这样再更新成12,取得末位数字2,我们就知道用户输入数值至少为三位数了,再更新成1,取得末位数字1,我们就知道用户输入的数值至少为四位数了这时候1/10=0,完犊子,更新不了了,停止,我们就知道用户输入的数值,最终是四位数
        具体代码如下:

      #include <stdio.h>
      
      int main(void)
      {
          int number = 0; //用来存放用户输入的数值
          int count = 0;//用来记录我们猜测的数值位数。
      
          printf("请输入一个数,我来判断你输入的是几位数:\n");
          scanf("%d", &number);
      
          while (number != 0)//当number/10等于0时
          {
              number = number / 10;//更新number
              count++;//先更新在记录,先记录在更新的话记录的是前一次数值的位数。
          }
      
          printf("您所输入的数是%d位数", count);
      
          return 0;
      }
      
      请输入一个数,我来判断你输入的是几位数:
      56654523
      您所输入的数是8位数
      

    • 您还可以看一下 韦语洋(Lccee)老师的一机一码加密、被破解自动销毁随时授权回收升级系列视频课程课程中的 演示如何破解一个软件绕过注册机(仅作为后续课程的了解)小节, 巩固相关知识点
    评论

报告相同问题?

问题事件

  • 创建了问题 3月30日

悬赏问题

  • ¥15 使用docker安装chemex后无法启动
  • ¥15 关于#vue.js#的问题:word excel和ppt预览问题语言-javascript)
  • ¥15 Apache显示系统错误3该如何解决?
  • ¥30 uniapp小程序苹果手机加载gif图片不显示动效?
  • ¥20 js怎么实现跨域问题
  • ¥15 C++dll二次开发,C#调用
  • ¥15 请教,如何使用C#加载本地摄像头进行逐帧推流
  • ¥15 Python easyocr无法顺利执行,如何解决?
  • ¥15 为什么会突然npm err!啊
  • ¥15 java服务连接es读取列表数据,服务连接本地es获取数据时的速度很快,但是换成远端的es就会非常慢,这是为什么呢