C语言:单链表查找其中节点的数据

#include <stdio.h>
#include <stdlib.h>

#define		MAX		10

struct List
{
	int number;
	int total;
	struct List *next;
};
typedef struct List Node;
typedef Node *Link;

int data[2][MAX] = {3, 9, 25, 5, 7, 26, 56, 80, 2, 6, 1050, 3850, 1000, 5670, 2250, 3457, 6734, 2234, 3000, 1090};

int searchtime = 0;


/****************************
 *	链表销毁
 ***************************/
void free_list(Link head)
{
	Link pointer;
	
	while(head != NULL)
	{
		pointer = head;
		head = head->next;
		free(pointer);
	}
}


/****************************
 *	链表查询
 ***************************/
int list_search(int key, Link head)
{
	Link pointer;
	
	pointer = head;
	while(pointer != NULL)
	{
		searchtime++;
		if(pointer->number == key)
		{
			printf("Data num: %d\n", pointer->number);
			printf("Data total: %d\n", pointer->total);
			return 1;
		}
		pointer = pointer->next;
	}
	
	return 0;
}


/****************************
 *	建立链表
 ***************************/
Link create_list(Link head)
{
	Link new;
	Link pointer;
	int i = 0;
	
	head = (Link)malloc(sizeof(Node));
	
	if(head == NULL)
	{
		printf("memory allocate failure!\n");
	}
	else
	{
		head->number = data[0][0];   //定义首节点数据编号
		head->total = data[1][0];
		head->next = NULL;
		
		pointer = head;    //pointer指针设为首节点
		
		for(i = 1; i < MAX; ++i)
		{
			new = (Link)malloc(sizeof(Node));
			
			new->number = data[0][i];
			new->total = data[1][i];
			
			new->next = NULL;
			
			pointer->next = new;
			pointer = new;
		}
	}
	
	return head;
}


int main()
{
	Link head;    //节点声明
	int num;    //欲查找数据编号
	
	head = create_list(head);
	
	if(head != NULL)
	{
		printf("please input the data number: ");
		scanf("%d", &num);
		
		if(list_search(num, head))
		{
			printf("searchtime = %d\n", searchtime);
		}
		else
		{
			printf("Not Found!\n");
		}
		free_list(head);
	}
	
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值