串,链式存储,删除指定元素ch

我自己的思路就是,在串里查找ch,找到了,就把他删掉。
但是现在出现的就是答案乱码
为什么会出现汉字字母的乱码?

img

img

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7809279
  • 你也可以参考下这篇文章:从键盘上输入字符,分别统计其中字母,数字,其他字符的个数,并以柱状图的形式打印。C实现
  • 除此之外, 这篇博客: 结构体使用方法大全(定义,内存大小,初始化,结构数组,结构指针,位域,结构和联合体的嵌套,结构体包含函数指针)中的 定义结构指针、 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • struct stu
    {
    int num;
    char name[20];
    char sex;
    float score;
    }*boy1,boy2; //boy1是结构体指针,boy2是结构体

    (*boy1).num或者boy1->num都可以

    boy1=(struct stu*)malloc(sizeof(struct stu));

    ps->;num=102;

    ps->;name=“Zhang ping”;

    ps->;sex=‘M’;

    ps->;score=62.5;

    free(boy1);

  • 您还可以看一下 王剑老师的站长必修课:网站是怎样做出来的?课程中的 运营:才刚开始,站长更重要的工作…小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    由于没有完整的代码和错误描述,我无法确定具体问题的根本原因。但是提到汉字和字母混乱码,我猜测可能是编码问题。尝试在查找时使用正确的编码方式,并在删除操作时使用链表操作,而不是直接在字符串中删除字符。

    以下是针对串存储结构的删除操作示例:

    #include <iostream>
    using namespace std;
    
    void delchar(char *str, char ch) {
        char *p = str; //指向首字符
        char *q = str; //指向首字符
        while (*q) { //遍历整个字符串
            if (*q != ch) { //如果当前字符不是要删除的字符
                *p = *q; //将字符移到正确位置
                p++; //更新指针
            }
            q++; //继续遍历
        }
        *p = '\0'; //更新字符串尾部标记
    }
    

    对于链式存储结构,可以类似地使用指针操作实现删除操作。具体方法为,遍历链表,记录当前结点和前一个结点,并判断当前结点是否为要删除结点。如果是,则删除当前结点,将前一个结点的 next 指针更新为当前结点的下一个结点即可。下面给出链式存储结构下的删除操作示例:

    ```C++ struct ListNode { char val; ListNode *next;

    ListNode(char x) : val(x), next(NULL) {}
    

    };

    void delchar(ListNode &head, char ch) { ListNode prev, *cur; //定义两个指针 prev = NULL; cur = head; while (cur) { //遍历链表 if (cur->val == ch) { //如果当前结点是要删除的结点 if (prev == NULL) { //如果要删除的是头结点 head = cur->next

把代码贴上来,方便修改。