数据结构

2023-03-29 数据结构【二】顺序表,单链表 ,双链表,链

2023-03-28  本文已影响0人  ForestPei

2.2 查找

2.2.1 线性表

for 循环按着索引遍历

int LocateElem_Sq(SqList L,ElemType e){     //算法2.2 顺序表的查找
    //顺序表的查找
    for(int i=0;i<L.length;i++)
        if(L.elem[i]==e) return i+1;
    return 0;
}

2.2.2 单链表

按顺序

指针下移遍历 p= p->next;

Status GetElem_L(LinkList L,int i,ElemType &e){     //算法2.6 按序号查找
    //在带头结点的单链表L中查找第i个元素
    int j;
    LNode *p;
    p=L->next;j=1;                          //初始化,p指向第一个结点,j为计数器
    while(j<i&&p){                          //顺链域向后扫描,直到p指向第i个元素或p为空
        p=p->next;++j;
    }
    if(!p || j>i)   return ERROR;           //第i个元素不存在
    e=p->data;                              //取第i个元素
    return OK;
}       

按值

指针下移遍历,比较指针值域p->data;

LNode *LocateElem_L(LinkList L,ElemType e){         //算法2.7 按值查找
    //在带头结点的单链表L中查找值为e的元素
    LNode *p;
    p=L->next;
    while(p&&p->data!=e)
        p=p->next;                          //寻找满足条件的结点
    return p;                               //返回L中的值为e的数据元素的位置,查找失败返回NULL
}                                           //LocateElem_L

2.2.3 双链表

链表指针后移,单双链表相同

DuLNode *GetElemP_DuL(DuLinkList L,int i){
    //在带头结点的双向链表L中查找第i个元素,返回结点的地址
    int j;
    DuLNode *p;
    p=L->next;j=1;                          //初始化,p指向第一个结点,j为计数器
    while(j<i&&p){                          //顺链域向后扫描,直到p指向第i个元素或p为空
        p=p->next;++j;
    }
    if(!p || j>i)   return NULL;            //第i个元素不存在
    return p;
}                                           //GetElemP_DuL

2.2.4 顺序栈

没有按值,索引查找,只能出栈,入栈

2.2.5 链栈

没有按值,索引查找,只能出栈,入栈

2.2.6 循环队列

没有按值,索引查找,只能出队,入队

2.2.7 链队

没有按值,索引查找,只能出队,入队;

简单总结以上各数据结构的流程;待持续更新

上一篇 下一篇

猜你喜欢

热点阅读