穷穷116 2023-04-21 08:37 采纳率: 0%
浏览 12

C语言实现链表删除能被三整除的元素,输入两位数以上数据时不成功.

我想实现链表自动删除特定类元素,比如能被三整除的数.
但运行时输入很奇怪,似乎不能输入两位数即以上的数,我不明白是哪里出了问题.

img

#include<stdio.h>
#include<iostream>
using namespace std;
#include<stdlib.h> 

typedef int Status;

typedef char Elemtype;

typedef struct LNode {//定义链表
    Elemtype Data;
    //Elemtype* next;
    struct LNode *next;
}LNode,*LinkList;

int Inilist(LinkList &L){//初始化链表//int 型 
    L = new LNode;
    L->next = NULL;
    return OK; 
}

void Create_List(LinkList &L,Elemtype n){
    L = new LNode;
    L -> next = NULL;
    LNode *R = L;
    for(int i = 1; i <= n; i++){
        LNode *S; 
        S = new LNode;
        cin >> S->Data;
        S->next = NULL;
        R->next = S; 
        R = S;
    }
}

void Delete(LinkList &L){ 
    LNode *p = L->next;
    LNode *Target = L; 
    while(p){
        if(p->Data % 3 == 0){
            Target ->next = p->next;//假设第一个就能被三整除 
            free(p);//释放目标数据 
            p = Target ->next;
        }
        else{
             Target  = p;//不被三整除,就往后挪一个位置继续找 
             p = p->next;//为下一次循环做准备 
        }
    }
}

void PrintList(LinkList &L){
    LNode *P;
    P = new LNode;
    P = L -> next; 
    while(P){
        cout << P->Data << " ";
        P = P->next;
    } 
    cout << endl; 
}
 
int main() {
    int n = 0;
    LinkList LA;
    Inilist(LA);
    cin >> n; 
    Create_List(LA, n);
    PrintList(LA);
    Delete(LA);
    PrintList(LA);
    return 0;
}
  • 写回答

2条回答 默认 最新

  • threenewbee 2023-04-21 08:51
    关注

    因为
    typedef char Elemtype;
    所以链表每个节点只能装下单个字符

    评论

报告相同问题?

问题事件

  • 创建了问题 4月21日

悬赏问题

  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了