zoukankan      html  css  js  c++  java
  • 建立动态链表

    1、所谓建立动态链表是指在程序执行过程中从无到有的建立起一个链表,即一个一个的开辟节点和输入各节点的数据,并建立起前后相连的关系。

    例:写一个程序建立一个含有学生(学号、成绩)数据的单向动态链表。

    约定:学号不会为0,若输入学号为0,则表示建立链表的过程完成,该节点不应连接到链表中。

    提示:若输入的p1->num不等于0,则输入的是第一个节点数据(n=1),令head=p1,,也就是使head指向新开辟的节点,p1所指向的节点就成为链表中的第一个节点。再开辟另一个节点并使p1指向它,接着输入该节点的数据。若输入的p1->num!=0,则应炼乳第二个节点(n=2),将新结点的地址赋给第一个节点的next成员。接着使p2=p1,也就是使p2指向刚建立的节点。

    2、实现链表输出

    首先要知道链表第一个结点的地址,也就是要知道head的值。然后设一个指针变量p,先指向第一个节点,输出p所指的节点,然后使p后移一个节点再输出,直到链表的尾节点。

    3、对链表的删除操作

    并非是真正的删除,而是断掉原来的链接关系即可。

    为了删除单向链表中的某个节点,首先要找到待删节点的前趋节点,然后将此前趋节点的指针域去指向待删节点的后续节点(q->next=p->next),最后释放被删节点所占存储空间(free(p))即可。

    4、对链表的插入操作

    对链表的插入是指将一个节点插入到已有链表中。

    我们可以用指针变量p0指向待插入的节点,p1指向第一个节点。将p0->num与p1->num相比较,若p0->num>p1->num,此时将p1后移,并使p1指向p1所指向的节点。

    例:

    #include "StdAfx.h"
    #include<stdio.h>
    #include<stdlib.h>
     insert_snode(SLIST (*head),int x,int y)
    {
        SLIST *s,*p,*q;
        s=(SLIST *)malloc(sizeof(SLIST));
        s->data=y;
        q=head;p=head->next;
        while((p!='')&&(p->data!=x))
        {
            q=p;
            p=p->next;
        }
        s->next=p;
        q->next=s;
    }
  • 相关阅读:
    IP地址和MAC地址,以及arp攻击
    可爱的老婆
    win7 homebasic下,.net2008 连接oracle,提示错误OCIEnvCreate 失败,返回代码为 1,但错误消息文本不可用
    检讨
    数据库索引
    PB调用C#编写的DLL
    用c#开发可供PB调用的COM组件
    关于excel取消科学计数法的问题
    按键码对照
    JSONP学习资料
  • 原文地址:https://www.cnblogs.com/lvfengkun/p/10397836.html
Copyright © 2011-2022 走看看