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个回答
怎么看回答
◆◆
评论读取中....
请登录后再发表评论!
◆◆
修改失败,请稍后尝试
精华知识