单链表的查找方法

//单链表查找操作,,,按序号查找和按值查找
//先尾插法建立一个空链表
#include<stdio.h>
#include<stdlib.h>
typedef int elem;
typedef struct Lnode {
	elem *data;
	struct Lnode *next;
	
}Lnode, *list;
list creat(list &L)  //需要熟练
{
	int x;
	Lnode *s, *r = L;
	L = (list)malloc(sizeof(Lnode));
	L->next = NULL;
	scanf("%d", &x);
	while (x!=9999)
	{
		s = (list)malloc(sizeof(Lnode));
		s->data = x;
		r->next = s;
		r = s;
		scanf("%d", &x);
	}
	r->next = NULL;
	return L;
}
//接下来按序号查找
void getelem(list L, int i)
{
	int j = 1;
	Lnode *p = L->next;
	if (i==0)//第0个节点即为头节点
	{
		return L;
	}
	if (i<0)//小于0无效
	{
		return NULL;
	}
	while (p&&j < i)
	{
		p = p->next;
		j++;
	}
	return p;//i大于表长时返回的是空值;
}
//按值查找结点
void getelem2(list L, elem e)
{
	int i=1;
	Lnode *p = L->next;
	while (p=NULL&&p->data!=e)
	{
		p = p->next;
		i++;
	}
	return p,i;
}

猜你喜欢

转载自blog.csdn.net/cyh19971997/article/details/81102939