zoukankan      html  css  js  c++  java
  • 《数据结构》2.5线性表的其他表示形式

     1 //单循环链表(对两个单循环链表L1、L2进行连接操作,即将L2的第一个数据元素节点连接到L1的尾节点之后,时间复杂度O(n)优化为O(1))
     2 q = r1->next;                //保存L1的头节点指针
     3 r1->next = r2->next->next;  //L1与L2尾头连接
     4 free(r2_>next);                //释放L2表的头节点
     5 r2->next = q;                //组成循环链表
     6 
     7 //双向链表
     8 //定义双向链表节点
     9 typedef struct dunode
    10 {
    11     datatype data;
    12     struct dunode *prior, *next;
    13 }DulNode, *DulLinkList;
    14 //插入操作(设q指向双向链表中某节点,s指向待插入的值为e的新节点,将*s插入*q的前面)
    15 s->prior = q->prior;        //(1)
    16 q->prior = s;                //(2) (1)(2)的顺序不能改变,否则*q的直接前驱节点指针就会丢掉
    17 q->prior->next = s;
    18 s->nsxt = q;
    19 //删除操作(设q指向双向链表中某节点,删除*q)
    20 q->next->prior = q->prior;    //(1)
    21 q->prior->next = q->next;    //(2) (1)(2)顺序可以改变
    22 free(q);
    23 
    24 //静态链表
    25 //定义数组S
    26 #define MAXSIZE 1000
    27 typedef struct
    28 {
    29     datatype data;
    30     int next;
    31 }SNode;                        //节点类型
    32 SNode S[MAXSIZE];
    33 int SL, SX;                    //两个头指针变量,SL头指针代表用户的线性表,SX头指针指向空闲节点组成的链表
    34 //申请节点空间(向SX空闲链表申请,不能调用系统函数malloc())
    35 if(SX != -1)                //当SX为非空时
    36 {
    37     t = SX;                    //分配的节点地址(下标)存入t中
    38     SX = S[SX].next;        //取下一个节点给用户后,SX指针移到下一个节点位置
    39 }
    40 //回收节点空间(通过该节点的相地址t回收给SX,不能调用系统函数free())
    41 s[t].next = SX;
    42 SX = t;
    View Code

    说明:
    1.单循环链表
        将单链表最后一个节点的指针域不再为空指针而改成指向头节点,使链表头、尾节点相连,就构成了单循环链表;
        若对单链表常做的操作是在表尾、表头进行的,则可以改变链表的标识方法,即不用头指针h而用一个指向尾节点的
        指针r来标识循环链表,使操作效率提高。
    2.双向链表
        每个节点再增加一个指向直接前驱的指针域,这种节点组成的链表称为双向链表。
    3.静态链表
        用一维数组来描述线性链表,数组属于静态存储结构,则这种方式下描述的链表称为静态链表。
        指针域记录的是逻辑上相邻的下一个数据元素的相对地址(此结构中即为数组的下标),称为静态指针;由于C语言
        定义的数组没有下标为-1的单元,则空指针用-1表示。

    亲爱的读者:如果觉得本文对你有所帮助,请点击推荐,分享给其他人!
  • 相关阅读:
    cf B. Sereja and Suffixes
    cf E. Dima and Magic Guitar
    cf D. Dima and Trap Graph
    cf C. Dima and Salad
    最短路径问题(floyd)
    Drainage Ditches(网络流(EK算法))
    图结构练习—BFSDFS—判断可达性(BFS)
    Sorting It All Out(拓扑排序)
    Power Network(最大流(EK算法))
    Labeling Balls(拓扑)
  • 原文地址:https://www.cnblogs.com/zhuangwei/p/5700145.html
Copyright © 2011-2022 走看看