background image

  1、查找

  对单链表进行查找的思路为:对单链表的结点依次扫描,检测其数据域是否是我们
所要查好的值,若是返回该结点的指针,否则返回 NULL。

  因为在单链表的链域中包含了后继结点的存储地址,所以当我们实现的时候,只要

 

知道该单链表的头指针,即可依次对每个结点的数据域进行检测。

  以下是应用查找算法的一个例子:

#include <stdio.h>
#include <malloc.h>
#include <string.h

 

> /*包含一些字符串处理函数的头文件*/

#define N 10 
typedef struct node
{
 char name[20];
 struct node *link;
}stud;

stud * creat(int n) /*建立链表的函数*/
{
 stud *p,*h,*s;
 int i;
 if((h=(stud *)malloc(sizeof(stud)))==NULL)
 {
  printf("不能分配内存空间!");
  exit(0);
 }
 h->name[0]='\0';
 h->link=NULL;
 p=h;
 for(i=0;i<n;i++)
 {
  if((s= (stud *) malloc(sizeof(stud)))==NULL)
  {
   printf("不能分配内存空间!");
   exit(0);
  }
  p->link=s;
  printf("请输入第%d 个人的姓名",i+1);
  scanf("%s",s->name);
  s->link=NULL;