给定程序MODI1.C中,函数 void list ( MYDATA * h )的功能是:列出带头结点单链表中所有没有删除标记的数据。调用这个函数时,传给形参 h 的是指向单链表头结点的指针。 例如,当10个结点的数据为1,2,3,4,5,6,7,8 ,10时,输出将是:34678910。 其中,各个数据所对应的删除标记是由随机数产生的。 请改正函数 list 中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main 函数和 creat 函数,不得增行或删行,也不得更改程序的结构
时间: 2023-05-24 18:05:33 浏览: 141
c#利用MODI作图像中文字提取含资源库
错误的指定部分是在循环中直接将当前结点指向下一个结点,导致删除标记未被判断。应该改为先判断当前结点是否被删除,如果没有就输出数据并将当前结点指向下一个结点,否则就跳过当前结点,继续判断下一个结点。
修改后的代码如下:
void list(MYDATA *h) {
MYDATA *p = h->next;
while (p != NULL) {
if (!p->deleted) { // 判断当前结点是否被删除
printf("%d", p->data);
if (p->next != NULL && !p->next->deleted) // 判断下一个结点是否被删除
printf(",");
}
p = p->next;
}
}
阅读全文