链表

链表:

链表是物理存储单元上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中指针链接次序实现。链表由结点组成,在运行时可以动态生成一系列结点。由于不必按顺序存储,因此可以达到O(1)的复杂度。查找特定编号的结点就需要O(n),而线性表和顺序表就需要O(logn)和O(1).

链表可以充分利用计算机内存空间,实现灵活存取的优点,同时增加结点指针域空间开销较大。

为了表示数据元素,除了存储本身信息意外还要存储指示其直接后继的信息

插入元素:

void insert(Node *head,int p,int x){//head链表头指针,p锌元素插入位置,
                      x新元素中的数据域内容 Node
*tmp=head; for(int i=0;i<p;i++){ if(tmp==NULL) return; if(i<p-1) tmp=tmp->next;   } Node *tmp2=newNode; tmp2->data=x; tmp2->next=tmp->next; tmp->next=tmp2; }

删除链表中的元素:

intdel(Node *head,intp){
    Node *tmp=head;
    for(int i=0;i<p;i++){
    if(tmp==NULL)
    return -1;
    if(i<p-1)
    tmp=tmp->next;
}
    intret=tmp->next->data;
    tmp->next=tmp->next->next;
    return ret;
}

 

posted on 2019-09-30 16:00  姜姜糖  阅读(108)  评论(0编辑  收藏  举报