我自己的思路就是,在串里查找ch,找到了,就把他删掉。
但是现在出现的就是答案乱码
为什么会出现汉字字母的乱码?
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);
由于没有完整的代码和错误描述,我无法确定具体问题的根本原因。但是提到汉字和字母混乱码,我猜测可能是编码问题。尝试在查找时使用正确的编码方式,并在删除操作时使用链表操作,而不是直接在字符串中删除字符。
以下是针对串存储结构的删除操作示例:
#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
把代码贴上来,方便修改。