• 链表初始化总结


    顺序表:

    声明: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;方便节点向前移;

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

  • 相关阅读:
    python--Time(时间)模块
    python基础:冒泡和选择排序算法实现
    浅谈python的深浅拷贝
    python随笔--根据号码查询归属地
    python处理字符串:将字符串中的数字相加求和
    Wi-Fi 6解释:下一代Wi-Fi
    Wifi5和Wifi6的区别
    VS Code配置Git环境 X64
    VS Code配置C/C++环境 X64
    MikroTik CCR1036与Tilera GX36处理器
  • 原文地址:https://www.cnblogs.com/defen/p/5204800.html
Copyright © 2020-2023  润新知