單鏈表的查找

單鏈表的查找分爲按位查找和按值查找,其實上一節中插入和刪除的過程已經先實現了查找操做,只不過插入和刪除的查找是找到目標元素的上一個元素。而查找是找到目標元素。詳情請看代碼:ios

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

//單鏈表定義(結構體)
typedef struct LNode{
    int data;//數據域
    struct LNode *next;//指針域 
}LNode,*LinkList; 

//初始化單鏈表(不帶頭結點) 
/*
bool InitList(LinkList &L){
    L = NULL;//將單鏈表初始化爲空表 
    return true;
}
*/

//初始化單鏈表(帶頭結點)
bool InitList(LinkList &L){
    L = (LNode *)malloc(sizeof(LNode));//分配一個頭結點,而且用L指針變量指向這個頭結點
    if(L==NULL){
        return false;//內存不足分配失敗 
    } 
    L->next = NULL;//頭結點以後暫時尚未結點 
    return true;
}

//按位查找(帶頭節點)
LNode *GetElem(LinkList L,int i){
    if(i<1){
        return NULL;
    }
    LNode *p = (LNode *)malloc(sizeof(LNode));
    int j=0;
    p = L;
    while(p!=NULL&&j<i){
        p = p->next;
        j++;
    }
    return p;
} 

//按值查找(帶頭節點)
LNode *LocateElem(LinkList L,int e){
    LNode *p = (LNode *)malloc(sizeof(LNode));
    p = L->next;//使指針p指向第一個結點 
    while(p!=NULL && p->data!=e){
        p = p->next;
    }
    return p;//找到返回結點指針,不然返回NULL 
}
相關文章
相關標籤/搜索