【数据结构·C语言】请高手帮忙检查一个关于【链表结点的删除】算法是否正确

2025-01-05 15:24:01
推荐回答(1个)
回答1:

  1. int Locate_Sq(sqList &L , ElemType e ,status equal(ElemType , ElemType))这样的函数声明是不允许的,函数不可以直接做函数的参数,可以考虑用函数指针作为参数。但是呢,你这里不需要使用这种方式,直接在你的函数里面调用equal函数就好。

  2. int Locate_Sq(sqList &L , ElemType e ,status equal(ElemType , ElemType))函数的第一行,ElemType p,根据你后面用的,这里的p应该是个指针,因此呢,我猜应该这样写ElemType *p

  3. int Locate_Sq该函数的作用应该是返回元素在表内的位置,如果没有该元素则返回一个不可能的值,例如-1,因此该函数的返回值应该改成,if(i<=L.length) return ;else return -1;

  4. delete函数里,根据上面第3条,k=Locate_Sq(C,B.elem[i],equal);后面的if需要修改为,if(k==-1) i++; 

  5. delete函数里q=A.elem+A.length-1;这一句的思想是对的,但是里面变量类型需要注意搞一致。

  6. delete函数里的for是用来把后面的元素向前移动,因此,指针需要向后移动,用后面的结点覆盖前面的结点,因此for得改为for(;p

希望采纳,期待对你有帮助,欢迎追问