按值查找结果出不来,感谢指正
#include <stdio.h>
#include <stdlib.h>
typedef struct Node //结构体,表示出单链表每个节点的内容,用以定义出单链表//
{
int data; //定义节点的数据域//
struct Node *next; //定义节点的指针域,该指针变量类型为结构体类型 //
}Node,*LinkList; //结构体别名Node,定义一个指针变量LinkList指向结构体//
/*初始化单链表*/
void InitList(LinkList *L) //*L是空链表指针变量,代表空链表,初始化的是只能是变量!不能是指针//
{
*L = (Node *)malloc(sizeof(Node)); //建立头节点,内存空间是节点结构体定义出的内存空间//
(*L)->next = NULL; //空链表//
}
/*尾插法*/
void TailInsert(LinkList L)
{
Node *s;
Node *r;
char c;
int flag = 1;
printf("请依次输入要存入单链表的元素(以'$'结束):\n");
r = L;
while(flag==1) //判断flag是否为1//
{
c = getchar();
if(c!='$')
{
s=(Node *)malloc(sizeof(Node)); //创建新结点//
s->data=c;
r->next=s;
r=s;
}
else
{
flag=0; //置flag为零//
r->next=NULL;
}
}
}
/*按值查找*/
Node *Locate(LinkList L,char key)
{
Node *q;
q = L->next; //从头结点开始遍历//
while(q->data!=NULL) //表未查完//
{
if(q->data!=key)
{
q=q->next;
}
else
break; //找到q->data=key时,跳出循环//
}
return q;
}
/*输出链表*/
void PrintList(LinkList L)
{
LinkList p;
p=L->next;
printf("链表元素如下:\n");
while(p!=NULL)
{
printf("%c",p->data);
p=p->next;
}
printf("\n");
}
int main()
{
int i;
char key;
LinkList L; //建立一个空链表//
Node *p; //建立新结点指针变量//
Node *q;
InitList(&L); //初始化此空链表//
//HeadInsert(L);
TailInsert(L);
PrintList(L);
printf("请输入要查找的元素值key:",key); //按值查找//
key=getchar();
q = Locate(L,key);
printf("查找到的元素为:%c\n",q->data);
return 0;
}
while(q->data!=NULL)
改为
while(q !=NULL)
第47行while(q->data!=NULL) 修改为 while(q!=NULL)
感谢!