单链表的查找分为按位查找和按值查找,其实上一节中插入和删除的过程已经先实现了查找操做,只不过插入和删除的查找是找到目标元素的上一个元素。而查找是找到目标元素。详情请看代码: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 }