#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;
}
C语言:单链表查找其中节点的数据
最新推荐文章于 2024-07-15 19:05:33 发布