• C语言 严蔚敏数据结构 线性表之链表实现


      博主最近在考成都大学皇家计算机科学与技术专业,复习专业课数据结构,正好学习到线性结构中的线性表用链表这种存储结构来实现。

      首先,数据结构包括1、数据的操作2、逻辑结构3、存储结构(数据结构三要素。

      直接上代码,现阶段代码实现功能有:链表初始化、遍历、增、删、返回链表长度,后续功能陆续发布。其中肯定有很多问题,希望各位码哥留言。

    Linklist* InitList(int i)//i为链表大小
    {
        Linklist *head;
        head = (Linklist*)malloc(sizeof(Linklist));
        Linklist *end=head;
        int j = 0;
        for (j = 0;j < i;j++)
        {
            Linklist *node = (Linklist*)malloc(sizeof(Linklist));
            scanf("%d", &node->data);
            end->next = node;
            end = node;
        }
        end->next = NULL;
        return head;
    }
    int GetLenLinklist(Linklist *head)//获取带头结点链表长度
    {
        int length;
        Linklist *p;
        p = head;
        for (length = 0;p->next != NULL;length++)
        {
            p = p->next;
        }
        return length;
    }
    void LinklistMap(Linklist *head,int length)//遍历整个链表
    {
        Linklist *p;
        p = head->next;
        int i;
        for (int i=0;i<length;i++)
        {
            printf("第%d个值为%d", i+1 , p->data);
            p = p->next;
        }
    }
    void InsertLinkList(Linklist *head,int i,int data)//在第i个结点后插入 一个结点
    {
        Linklist *p = head;
        int j = 0;
        while (p->next!=NULL&&j < i - 1)
        {
                p = p->next;
                ++j;
        }
        if (!p || j > i - 1)
            printf("当前链表为空");
        else
        {
            Linklist *node = (Linklist*)malloc(sizeof(Linklist));
            node->data = data;
            node->next = p->next;
            p->next = node;
        }
    }
    void DelLinklist(Linklist *head, int data)//删除结点值=data的结点。
    {
        Linklist *p, *q;
        q = head;
        p = head->next;
        while (p->next != NULL && p->data != data)
        {
            p = p->next;
            q = q->next;
        }
        if (p->data!=data&&p->next == NULL)
            printf("链表中无此节点");
        else
        {
            q->next = p->next;
            free(p);
        }
    }//还未实现多个结点==某个值

    后续即将更新,再插入和删除操作中,记住赵海英老师上课的话,先连接,后删除!

    本博客唯一解释权:成都大学信息科学与工程学院学习委员雷雷提

  • 相关阅读:
    Android——另外一种增删查改的方式(ContentProvider常用)
    VS2012下基于Glut OpenGL glScissor示例程序:
    JAXP的SAX解析
    38岁老男孩个人建站方向求教
    [置顶] 某大型银行深化系统技术方案之十三:服务层之服务接口模式
    比特币人必知术语
    ok6410 u-boot-2012.04.01移植二修改源码支持单板
    最近修bug的一点感悟
    小智慧24
    redis beforesleep
  • 原文地址:https://www.cnblogs.com/Alei777/p/10829794.html
Copyright © 2020-2023  润新知