c语言编译怎么输出对应序号,c语言编写的链表按序号查找时为什么没有按对应的序号输出相应结点值...

博主在C语言中使用头插入法创建链表并实现按序号查找功能时遇到问题,链表查找结果与预期不符。查找过程中,输入特定序号并未返回正确的链表节点值。代码中可能存在链表插入顺序或查找逻辑的错误,导致查找结果混乱。目前,博主怀疑问题可能出在建表阶段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c语言编写的链表按序号查找时为什么没有按对应的序号输出相应结点值

我写了一个链表的查找的函数,可是比如输入为a, b, c(链表data域为字符型),用头插入法建表应该是按c,b,a的顺序排列,查找时定位1,则输出c, 定位到2,又变成了空值,定位到3时又输出了b,然后定位到4时又是空值,定位到5时又输出了a,真是看不出来哪儿错了,我估计是建表的时候出问题了,请高手指点一下。代码如下:

#include "stdio.h"

#include "stdlib.h"

#include "conio.h"

typedef char datatype;

typedef struct node

{

datatype data;

struct node *next;

}linklist;

linklist *L;

linklist *CreatLishF()//头插法建表

{

char ch;

linklist *head, *s;

head = NULL;

ch = getchar();

while(ch != '#')

{

s = (linklist*)malloc(sizeof(linklist));

s->data = ch;

s->next = head;

head = s;

ch = getchar();

}

return head;

}

linklist *Get(linklist *head, int i)//按序号查找

{

int j;

linklist *p;

j = 0;

p = head;

while((p->next != NULL) && (j < i))

{

p = p->next;

j++;

}

if(i == j)

{

return p;

}

else

{

return NULL;

}

}

void main()

{

int i=0;

printf("\请输入链表元素(字符),以'#'结束:\n");

L = (*CreatLishF)();

printf("\n请输入要查找的序号:\n\t");

scanf("%d",&i);

printf("%c",(*Get)(L,i)->data);

}

6个回答

67b0a70febe552c922c54bb8560d6ef6.png

2b909efc33d3da366e8db364a1f58e2a.png

怎么看回答

◆◆

评论读取中....

请登录后再发表评论!

◆◆

修改失败,请稍后尝试

精华知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值