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);
    }
}//还未实现多个结点==某个值

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

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

原文地址:https://www.cnblogs.com/Alei777/p/10829794.html

时间: 2024-08-03 08:31:00

C语言 严蔚敏数据结构 线性表之链表实现的相关文章

[考研系列之数据结构]线性表之链表

1.链表分类 通过线性表概述,我们知道了链表这样一种数据结构,它又分成三类,分别是 单向链表 循环链表 双向链表 单向链表 单向链表的指针域只有一个指向下一个节点的指针,需要注意几点: 1.头指针--指向第一个节点 2.最后一个结点的指针指向NULL 3.头结点--在链表的第一个结点之前附设一个结点,它的数据域为空 所以,我们看到:  单向链表为空的<=>链表有且只有一个头结点<=>头结点的指针指向NULL 循环链表 循环链表和单向链表最大的不同就是:最后一个结点的指针不再指向NU

再回首,数据结构——线性表、链表上的常见算法

最近在复习数据结构,顺便看看大一的时候写的代码,看完之后比当初有了更加深刻的体会. 希望这些能提供给初学者一些参考. //1.编写算法实现线性表就地逆置的操作 void InverseList (SeqList l) { for (i = 0; i <= (l.length-1)/2; i++) { l.elem[i] <-> l.elem[l.length-1-i]; } } //2.从顺序表中删除自第i个元素开始的k个元素 void DeleteList(SeqList l, int

数据结构-线性表-静态链表

对于线性链表,也可用一维数组来进行描述.这种描述方法便于在没有指针类型的高级程序设计语言中使用链表结构. 静态链表是利用数组来实现,只是改变了实现方式,实际上链式存储说的存储的方式,数组只是实现的方式,不能将静态链表看做是顺序存储. 数组的元素都是由两个数据域组成,data和cur.也就是说,数组的每一个下标都对应一个data和一个cur. 数据域data用来存放数据元素,也就是通常我们要处理的数据:而游标cur相当于单链表中的next指针, 存放该元素的后继在数组中的下标.我们把这种用数组描述

Java数据结构-线性表之链表应用-检测链表是否有环

??如何检测一个链表是否有环?这个是一个出现频率较高的面试题. ??如下是一个含有环的链表. (图片来自http://www.nowamagic.net/librarys/veda/detail/2245 一个有很多关于数据结构的文章的网站,还有其他的资料,可以看看) 我这里解题的方法有三种: 快慢指针方法:两个速度不一样的指针遍历总会相遇: 利用环的顶点数和边相等的关系: 两个指针遍历判断步数是否相等. ??为了实现检查链表是否含有环的情况,我们需要先构建出一个含有环的链表. ??于是乎我在之

(源代码见大话数据结构)线性表—静态链表

#include <stdio.h> #include <stdlib.h> #include <time.h> #define MAXSIZE 1000 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALS 0 typedef int ElemType; typedef int Status; typedef struct { ElemType data; int cur; } Component,Stati

数据结构 线性表—单链表

本文只要实现单链表的初始化.插入(尾插.头插.任意位置插入).删除(尾删.头删.删除指定元素).查找等. 定义单链表 typedef int DataType; typedef struct LinkNode {  DataType data;  struct LinkNode *next; }LinkNode, *pLinkNode, *pList; 实现单链表的所有接口: void InitLinkList(pList* pHead);//单链表的初始化 void Destroy(pList

数据结构线性表链表的C语言实现

                                                                                      数据结构线性表链表的C语言实现      说明:线性表是一种最简单的线性结构,也是最基本的一种线性结构,所以它不仅是学习中的重点,也是应用开发非常常用的一种数据结构.它可以分为顺序表和链表.它的主要操作是数据元素的插入,删除,以及排序等.接下来,本篇文章将对线性表链表的基本操作和运用进行详细的说明(包含在源代码的注释中),并给

数据结构线性表插入删除的示例

昨天留的作业,数据结构书和c语言书真的不一样,需要自己加加补补,今天写的时候迷迷瞪瞪的,反正在我电脑上能用. 数据结构线性表插入删除的示例: 代码: #include<iostream> #include<cstdio> using namespace std; #define list_init_size 100 #define listincrement 10 typedef struct { int *elem; int length; int listsize; }sqli

数据结构-线性表_顺序表

进入大学一年了,今日终于有勇气写写随笔并展示出来了. 如有不足之处,请大家指正. 今日我想写的就是我对数据结构-线性表_顺序表的理解. 不BB了,进入正题!!!!! 数据结构中的逻辑结构分为线性结构和非线性结构,而线性表就属于线性结构. 线性结构是 n 个数据元素的有序(次序)集合,它有下列几个特征: 集合中必存在唯一的一个 "第一个元素": 集合中必存在唯一的一个 "最后的元素": 除最后元素之外,其它数据元素均有唯一的 "后继": 除第一元素