//按值查找表结点值地址
include
include
typedef struct LNode
{
int data;
struct LNode *next;
} LNode, *LinkList;
LinkList List_TailInsert(LinkList L)
{
int x; //设元素类型为整型
L = (LinkList)malloc(sizeof(LNode));
LNode *s, *r = L; //r为表尾指针
printf("请输入表元素(以999结尾):");
scanf("%d", &x); //输入结点的值
while (x != 999) //输入999表示结束
{
s = (LNode *)malloc(sizeof(LNode));
s->data = x;
r->next = s;
r = s; //r指向新的表尾结点
scanf("%d", &x);
}
r->next = NULL; //尾结点指针置空
return L;
}
void print(LinkList L)
{
while (L->next != NULL)
{
L = L->next;
printf("%d ", L->data);
}
}
LNode *LocateElem(LinkList L, int e)
{
int i = 1;
LNode *p = L->next; //头结点赋给p
while (p != NULL && p->data != e) //从第1个结点开始找data值为e的结点
{
p = p->next;
i++;
}
return p; //找到后返回该结点指针,否则返回NULL
}
int main()
{
LinkList L, A;
LNode *p;
int e, i;
A = (LinkList)malloc(sizeof(LNode));
A = List_TailInsert(L);
printf("尾插法建立的单链表:");
print(A);
printf("\n");
printf("请输入要查找的值:");
scanf("%d", &e);
p = LocateElem(A, e);
printf("要查找的值%d的地址为%p.", e, p);
printf("\n");
return 0;
}