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

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

  • 相关阅读:
    牛客题霸NC15求二叉树的层序遍历Java题解
    牛客题霸NC105二分查找Java题解
    .net基本性本能优化问题
    urlRewriter
    元数据MetaData
    asp.net整体运行机制详解
    asp.net整体运行机制
    asp.net页面从初始化到卸载事件顺序
    Spring表达式语言之SpEL
    Spring 学习笔记(三)之注解
  • 原文地址:https://www.cnblogs.com/defen/p/5204800.html
Copyright © 2011-2022 走看看