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