zoukankan      html  css  js  c++  java
  • 链表初始化总结

    顺序表:

    声明:struct seqlist

    {

    Int last;

    Int data[12];

    }seq,*seqlist;

    初始化

    seqlist init_seqlist()

    {

    seqlist sl = malloc(sizeof(seq));

    sl->last =-1;//标记位,用于判断是表头还是表尾

    return sl;

    }

    插入操作(判断是否满,定位,移位(从后开始移),插入);

    删除操作(判断是否为空,定位,移位,从定位的位置开始移);

    ------------------------

    单链表:

    声明:typedef struct node

    {

    lnt data;

    struct node *next;

    }listnode,*linklist;

    初始化:

    1. 不带表头:

    linklist init_list()

    {

    linklist L = NULL;

    return L;

    }

    1. 带表头(较常用)

    linklist init_list()

    {

    linklist L =malloc(sizeof(listnode));

    L->next =NULL;

    return L;

    }

    插入操作(产生一个新节点,定位,插入新节点)

    删除操作(判断是否为空,定位,删除节点)

    反转操作:

    linklist p,q;

    p=L->next;

    L->next = NULL;//将链表断开

    while(p!=NULL)

    {

    q = p->next;

    p->next = L->next;

    L->next = p;不断在L的后面循环插入pp的下个节点

    p = q;

    }

    ----------------------------------------

    单向循环链表:

    声明:typedef struct node

    {

    int data;

    struct node *next;

    }listnode,*linklist;

    初始化:

    1. 不带头

    linklist init_list()

    {

    linklist L =NULL;

    return L;

    }

    1. 带头节点

    linklist init_list()

    {

    linklist L =malloc(sizeof(listnode));

    L->next = L;

    return L;

    }

    不带头,插入操作(产生新节点,判断是否为空,如果为空*l = new,new->next=new,否则插入节点)注意因为有对l操作,所以注意取地址。Linklist l 是个变量而不是指针,只有*l才是指针。

    删除操作(类似于单链表);

    -------------------------------

    双向循环链表:

    声明:

    typedef struct node()

    {

    int data;

    struct node *next,*prve;

    }linknode,*linklist;

    初始化:

    linklist init_list()

    {

    linklist L = malloc(sizeof(listnode));

    L->next = L;

    L->prve = L;

    return L

    }

    插入操作:(产生新节点,定位,插入)

    尾部插入,中间插入只需将L改成p;

    new->n=L;

    new->p = L->p;

    L->p->n = new;

    L->p=new; 

    删除操作:

    p0->p->n = p0->n;

    p0->n->p = p0->p;

    p0->n = p0->p = NULL;

    奇偶排序:将以上两个结合。注意记录q=p->prev;方便节点向前移;

    内核链表:类型无关的双向循环链表。(内核链表节点包含在宿主节点中):

  • 相关阅读:
    pycharm的list的应用
    pycharm的list中copy的应用
    pycharm的list中clear的应用
    pycharm的list中append的应用
    crontab 管理指定用户的定时任务
    vsftp 搭建及虚拟账号配置
    MySQL 主从配置
    Ant 学习及常用任务
    ansible 小试
    微信H5页面分享
  • 原文地址:https://www.cnblogs.com/defen/p/5204800.html
Copyright © 2011-2022 走看看