题目:一个线性表(a1,a2,a3....,an)(n>3)采用带头结点的单链表L存储,设计一个算法求中间位置的元素(n为奇数时对应n/2的元素,n为偶数时对应(n+1)/2的元素)

分析:让p,q首先指向首结点,然后在p结点后面还存在两个结点的时候循环,p后移两个元素,q后移一个结点。当循环结束后,q指向的就是中间位置的结点

代码:

typedef struct LinkList {
    int data;
    struct LinkList* next;

}LinkList;
//求单链表中间位置的元素
int Midnode(LinkList* L) {
    LinkList* p = L->next, * q = p;//让p,q指向首结点
    while (p->next != NULL && p->next->next != NULL) {
        p = p->next->next;
        q = q->next;
    }

    return q->data;
}
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐