数据结构(十二)

来源:互联网 发布:xcalibur for mac 编辑:程序博客网 时间:2024/05/18 00:13

一、顺序表与链表的比较

基于时间的比较
存取方式
顺序表可以随机存取,也可以顺序存取
链表是顺序存取的
插入/删除时移动元素个数
顺序表平均需要移动近一半元素
链表不需要移动元素,只需要修改指针
若插入/删除仅发生在表的两端,宜采用带尾指针的循环链表


二、习题

例1. 已知单链表的结构定义如下: struct ListNode {    int data;    struct ListNode *next; }; typedef ListNode *LinkList; 请编写算法(写出算法代码),将指定的带头结点的单链表转为逆序。 参考算法代码形式如下: int ReverseLinkList( LinkList A ) {    ... }

参考代码:

int ReverseLinkList( LinkList A )
{
    if (A==NULL) return 0;
    ListNode *p = A->next;
    A->next = NULL;
    while (p!=NULL)
    {
        ListNode *q = p;
        p = p->next;
        q->next = A->next;
        A->next = q;
    }
    return 1;
}

0 0
原创粉丝点击