关于网友提出的“ 双向链表的查找”问题疑问,本网通过在网上对“ 双向链表的查找”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 双向链表的查找
描述:双向链表
给定双向链表的数据类型如下
typedef int ElemType;
typedef struct Node * PtrToNode;
typedef PtrToNode Position;
struct DListNode;
typedef DListNode * DList;
typedef struct Node
{
ElemType data; /*数据域*/
PtrToNode previous; /*指向前驱*/
PtrToNode next; /*指向后继*/
}Node;
struct DListNode
{
PtrToNode head; /*指向头节点*/
PtrToNode tail; /*指向尾节点*/
int size; //链表中数据项数
};
完成Position Locate(DList L,ElemType x)函数,该函数在双向链表中按从头到尾的顺序查找是否存在结点的数值为x,如果存在返回该结点的指针,否则返回NULL,其中L是一个不带头节点的空双向链表。
完成Position GetItem(DList L,int k)函数,该函数在双向链表中按从头到尾的顺序查找链表中的第k(从1开始计数)个节点,如果存在返回该结点的指针,否则返回NULL,其中L是一个不带头节点的空双向链表。
解决方案1:Position Locate(DList L,ElemType x)
{
Position p = L->head;
while (p && p != L->tail) {
if (x == p->data)
return p;
p = p->next;
}
return NULL;
}