<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

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

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

        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指針*/
      }  


      日韩精品一区二区三区高清