写一算法在带头结点的单链表结构上实现线性表操作LOCATE(L,X)

拜托大家帮帮忙
2024-12-21 10:46:50
推荐回答(2个)
回答1:

这个自己找一个数据结构的书来看吧,一般前两三章都是这些~~~

以下代码后半部分是Locate(k,x)~~

template
class ChainNode {
friend Chain;
p r i v a t e :
T data;
ChainNode *link;
} ;
template
class Chain {
p u b l i c :
Chain() {first = 0;}
~ C h a i n ( ) ;
bool IsEmpty() const {return first == 0;}
int Length() const;
bool Locate(int k, T& x) const; //查找k个元素x
int Search(const T& x) const;
Chain& Delete(int k, T& x);
Chain& Insert(int k, const T& x);
void Output(ostream& out) const;
p r i v a t e :
ChainNode *first; // 指向第一个节点的指针
} ;

//
bool Chain::Locate(int k, T& x) const
{// 寻找链表中的第k个元素,并将其传送至x
/ /如果不存在第k个元素,则返回f a l s e,否则返回t r u e
if (k < 1) return false;
ChainNode *current = first;
int index = 1; // current的索引
while (index < k && current) {
current = current->link;
i n d e x + + ;
}
if (current) {x = current->data; return true;}
return false; // 不存在第k个元素

}

回答2:

解:
int LocateElem_L(LinkList &L,ElemType x)
{
int i=0;
LinkList p=L;
while(p&&p->data!=x){
p=p->next;
i++;
}
if(!p) return 0;
else return i;
}