1.流程图
1.1按位置查找及按值查找
1.2往第i个位置插入元素
2.代码及运行结果
2.1按位置查找及按值查找
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void TailList(LinkList &L)//尾插法
{
L=(LinkList)malloc(sizeof(LNode));
LNode *s,*r=L;
ElemType x;
scanf("%d",&x);
while(x!=9999)
{
s=(LinkList)malloc(sizeof(LNode));//第一个结点
s->data=x;
r->next=s;
r=s;
scanf("%d",&x);
}
r->next=NULL;
}
LinkList GetElem(LinkList L,int SearchPos)//按位置查找
{
int i=0;
if(SearchPos<0)
{
return NULL;
}
while (L&&i<SearchPos)
{
L=L->next;
i++;
}
return L;
}
LinkList LocateElem(LinkList L,ElemType SearchVal)//按值查找
{
while(L)
{
if(L->data==SearchVal)
{
return L;
}
L=L->next;
}
return L;
}
int main(){
LinkList L;
TailList(L);
LinkList search;
search=GetElem(L,5);
if(search)
{
printf("%d\n", search->data);
}
search=LocateElem(L,6);
if(search)
{
printf("search success\n");
printf("%d\n", search->data);
}
return 0;
}
运行结果
2.2往第i个位置插入元素
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void TailList(LinkList &L)//尾插法
{
L=(LinkList)malloc(sizeof(LNode));
LNode *s,*r=L;
ElemType x;
scanf("%d",&x);
while(x!=9999)
{
s=(LinkList)malloc(sizeof(LNode));//第一个结点
s->data=x;
r->next=s;
r=s;
scanf("%d",&x);
}
r->next=NULL;
}
LinkList GetElem(LinkList L,int SearchPos)//按位置查找
{
int i=0;
if(SearchPos<0)
{
return NULL;
}
while (L&&i<SearchPos)
{
L=L->next;
i++;
}
return L;
}
bool InsertList(LinkList L,int i,ElemType InsertVal)//往第i个位置插入元素
{
LinkList p= GetElem(L,i-1);
if(p==NULL)
{
return false;
}
LinkList q=(LinkList)malloc(sizeof(LNode));
q->data=InsertVal;
q->next=p->next;
p->next=q;
return true;
}
void PrintList(LinkList L)
{
L=L->next;
while(L!=NULL)
{
printf("%3d",L->data);
L=L->next;
}
}
int main(){
LinkList L;
TailList(L);
LinkList search;
search=GetElem(L,5);
if(search)
{
printf("search success\n");
printf("%d\n", search->data);
}
bool ret=InsertList(L,2,55);
if(ret)
{
PrintList(L);
}
return 0;
}
运行结果