在单链表中,任何两个元素的存储位置之间没有固定的联系。然而,每个元素的存储位置都包含在其直接前驱结点的信息中。假设P是指向线性表中的第i个数据元素(结点ai)的指针,则p->next是指向第i+1个数据元素(结点ai+1)的指针。由此,在单链表中,取得第i个数据元素必须从头指针出发寻找。下面我们来看函数getelem在单链表中的实现。
Status Getelem_L (Linklist L,int i,ElemType&e) { //L为头指针
p=L->next; j=1; 初始化
while(p&&j<i){ //顺指针向后查找,直到p指向第i个元素或p为空
p=p->next; ++j;
}
if(!p||j>i) return error; //第i个元素不存在
e=p->data; //取第i个元素
return OK;
} // GetElem_L
如果要在上面实现更多的操作,可以在里面直接添加。