人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

鏈表的C語言完成之單鏈表的搜索運算

鏈表的C語言完成之單鏈表的搜索運算

更新時間:2022-09-13 文章作者:未知 信息來源:網絡 閱讀次數:

建立了一個單鏈表之后,如果要進行一些如插入、刪除等操作該怎么辦?所以還須掌握一些單鏈表的基本算法,來實現這些操作。單鏈表的基本運算包括:查找、插入和刪除。下面我們就一一介紹這三種基本運算的算法,并結合我們建立單鏈表的例子寫出相應的程序。

  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;
  p=s;
 }
 return(h);
}

stud * search(stud *h,char *x) /*查找鏈表的函數,其中h指針是鏈表的表頭指針,x指針是要查找的人的姓名*/
{
 stud *p; /*當前指針,指向要與所查找的姓名比較的結點*/
 char *y; /*保存結點數據域內姓名的指針*/
 p=h->link;
 while(p!=NULL)
 {
  y=p->name;
  if(strcmp(y,x)==0) /*把數據域里的姓名與所要查找的姓名比較,若相同則返回0,即條件成立*/
   return(p); /*返回與所要查找結點的地址*/
  else p=p->link;
 }
 if(p==NULL)
  printf("沒有查找到該數據!");
}

main()
{
 int number;
 char fullname[20];
 stud *head,*searchpoint; /*head是表頭指針,searchpoint是保存符合條件的結點地址的指針*/
 number=N;
 head=creat(number);
 printf("請輸入你要查找的人的姓名:");
 scanf("%s",fullname);
 searchpoint=search(head,fullname); /*調用查找函數,并把結果賦給searchpoint指針*/
}  

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 绩溪县| 丹东市| 台南市| 改则县| 云南省| 库尔勒市| 深水埗区| 都安| 铅山县| 新密市| 阿城市| 新河县| 丘北县| 虎林市| 梁山县| 淮安市| 中方县| 衡水市| 哈密市| 二连浩特市| 乌审旗| 神农架林区| 固镇县| 永州市| 纳雍县| 肥乡县| 绥芬河市| 大冶市| 莱西市| 汕头市| 普定县| 米易县| 筠连县| 鹤庆县| 桃源县| 盘锦市| 绥德县| 明溪县| 轮台县| 蒲江县| 西城区|