无头尾插单链表--------查找
#include <stdio.h> #include <stdlib.h> typedef struct person { int age; struct person *next; }per; per *tail_list(per *one, int num) { per *temp = (per *)malloc(sizeof(per)); temp->age = num; per *head = one; if(NULL == one) { return temp; } while(one->next) { one = one->next; } one->next = temp; return head; } //按节点查找 per *find_Node(per *head, int num) //在带头节点的单链表中查找的num个节点 { int j = 0; //从头节点开始 per *p = head; while(p->next && j < num) //顺着指针向后扫描,直到p->next为空或者j==num为止 { p = p->next; j++; } if(j == num && num != 0) //判断找到否 { printf("find :%d\n",p->age); } else { printf("NO,Find!\n"); } } //按照数值查找 per *Find_node(per *head,int key) { per *p = head->next; //在带头的链表中,从头节点开始比较 while(p && p->age != key) { p = p->next; } if(NULL != p) { printf("bingo!:%d\n",p->age); } else { printf("No,Find!\n"); } } int main() { int n = 0; int m = 0; per *head = NULL; head = tail_list(head,10); head = tail_list(head,20); head = tail_list(head,30); head = tail_list(head,40); head = tail_list(head,50); head = tail_list(head,60); //按节点查找 printf("input num!\n"); scanf("%d", &n); find_Node(head, n); //按数值查找 printf("input key!\n"); scanf("%d", &m); Find_node(head,m); return 0; }