数据结构单链表用c语言编程

用单链表作为存储结构,实现线性表(a0,a1....an-1)就地逆置的操作,所谓就地指辅助空间应为O(1)

供参考:

//就地逆置  -- 不带头结点的链表  -- 引用
void reverse(SingleLinkedList * & head)
{
    SingleLinkedList* p=NULL, * q=NULL;
    p = head->next;
    head->next = NULL;
    while (p)
    {
        q = p;
        p = p->next;
        q->next = head;
        head = q;
    }
}

//就地逆置  -- 带头结点的链表
void reverse(SingleLinkedList * head)
{
    SingleLinkedList* p=NULL, * q=NULL;
    p = head->next;
    head->next = NULL;
    while (p)
    {
        q = p;
        p = p->next;
        q->next = head->next;
        head->next = q;
    }
}