正确的应该是这样

而我的是,不仅输出的不对,长度也没输出

下面是我的代码






关注引自免费微信小程序:皆我百晓生
从你给出的描述和代码片段中,我注意到你在尝试实现一个单链表的基本操作,包括初始化、插入元素、删除元素、查找元素以及显示整个链表等。但是你的运行结果与期望不符,并且长度没有输出。
首先,我们需要确认几个关键问题:
InitList(LinkNode *&L)函数中,当输入元素后,循环内似乎没有正确地将每个新节点链接起来。当前的代码片段中,在循环内部每次分配内存后并没有把新节点连接到链表上,而是直接覆盖了s变量。正确的做法是在循环内部创建新节点并将它们依次链接起来。void InitList(LinkNode *&L)
{
LinkNode *r = L;
int n, t;
char a[100];
// 初始化头结点
L = (LinkNode *)malloc(sizeof(LinkNode));
L->next = NULL;
cout << "输入几个元素" << endl;
cin >> n;
cout << "输入的元素为" << endl;
for(int t = 0; t < n; t++)
{
s = (LinkNode *)malloc(sizeof(LinkNode));
s->data = a[t];
if(t == 0)
L->next = s;
else
r->next = s;
r = s; // 更新尾指针
s->next = NULL;
}
}
ListLength(LinkNode *L)函数中,用于计算链表长度的循环条件应该是p != NULL,同时,应确保在循环结束后返回计数器n的值。int ListLength(LinkNode *L)
{
int n = 0;
LinkNode *p = L->next;
while(p != NULL)
{
n++;
p = p->next;
}
return n;
}
ListInsert和ListDelete函数中,要注意对插入位置或删除位置的边界处理。建议您逐个检查各个函数实现,并调试以定位问题。同时,务必确保在调用这些函数前已经成功初始化了链表结构。如果可能,请提供完整的代码,这样我可以帮助您更准确地找出问题所在。