数据结构应用题第二章线性表代码

考研数据结构————第二章:线性表 2021考研的第二章:线性表!!!冲冲冲 文章目录第二章 线性表2.1 线性表的定义和基本操作2.1.1 线性表的定义2.1.2 线性表的基本操作2.2 线性表的顺序表示2.2.1 顺序表的定义2.2.2 顺序表上基本操作的实现2.2.3本章习题 第二章 线性表 【考纲的内容】 (一)线性表的定义和基本操作 (二)线性表的实现 (三)顺序存储:链式存储;线性表的应用 【知识框架】 2.1 线性表的定义和基本操作 2.1.1 线性表的定义 线性表是具有相同数据类型的n(你>=0)个数 阅读详情

头文件是为了后面初始化和打印链表的时候不用重复定义,实现在t1.c和t2.c两个文件中

#ifndef T2_H
#define T2_H

#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>

// 定义一个链表结点的结构体
typedef int ElemType;
typedef struct LNode{
    ElemType data;
    struct LNode *next;
}LNode, *LinkList;

// 初始化带头结点的指针
bool InitList_withHead(LinkList *L);
// 初始化不带头结点的指针
bool InitList_withoutHead(LinkList *L);
// 打印一个带头结点的指针
void printfLinkList2(LinkList L);
// 打印一个不带头结点的链表
void printfLinkList(LinkList L);

#endif
  • 在带头结点的单链表L中删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一
#include "t2.h"

// init
bool InitList_withHead(LinkList *L){
    *L=(LNode *)malloc(sizeof(LNode));
    if(*L==NULL)
        return false;
    (*L)->next=NULL;
    return true;
}
void delete_x_node2(LinkList *L,ElemType x){
    LNode *p=(*L)->next;//指向下一个结点
    LNode *q=*L;//指向前一个结点
    if(p==NULL)
        return;
    while(p!=NULL){
        if(p->data==x){
            q->next=p->next;
            free(p);
            p=q->next;
        }else{
            q=q->next;
            p=p->next;
        }
    }
}
void printfLinkList2(LinkList L){
    if(L->next==NULL)
        return;

    LNode *p=L->next;
    while(p!=NULL){
        printf("%d->",p->data);
        p=p->next;
    }
    printf("\n");
}
void test2(){
    LinkList L;
    InitList_withHead(&L);
    LNode *p=L;
    for(int i=0;i<4;i++){
        LNode *s=(LNode *)malloc(sizeof(LNode));
        s->data=i+1;
        s->next=NULL;
        p->next=s;
        p=p->next;
    }
    printfLinkList2(L);
    delete_x_node2(&L,1);
    printfLinkList2(L);
}

// void main(){
//     test2();
// }
  • 设计一个递归算法,删除不带头结点的单链表L所有值为x的结点
#include"t2.h"

// init
bool InitList_withoutHead(LinkList *L){
    (*L)==NULL;
    return true;
}

void delete_x_node(LinkList *L,ElemType x){
    if(*L==NULL)//如果当前是一个空表,直接返回true;
        return;

    if((*L)->data==x){//如果当前节点的值是x,进行删除
        LNode *p=*L;
        (*L)=p->next;
        free(p);
        delete_x_node(L,x);//递归调用
    }
    delete_x_node(&((*L)->next),x);//递归调用
    
}
void printfLinkList(LinkList L){
    LNode *p=L;
    while(p!=NULL){
        printf("%d->",p->data);
        p=p->next;
    }
    printf("\n");
}
void test1(){
    LinkList L;
    InitList_withoutHead(&L);
    LNode *p=L;
    for(int i=0;i<4;i++){
        LNode *s=(LNode *)malloc(sizeof(LNode));
        s->data=i+1;
        s->next=NULL;
        if(i==0){//第一个结点的插入,不带头结点的链表需要特殊处理
            L=s;
            p=L;
        }
        else{
            p->next=s;
            p=p->next;
        }

    }
    printfLinkList(L);
    delete_x_node(&L,1);
    printfLinkList(L);
}
// void main(){
//     test1();
// }
  • 设L为带头结点的单链表,编写算法实现从尾到头反向输出每一个结点
#include "t2.h"
// 实际使用中,我们可以直接先编写一个函数,去掉头指针结点,再进行递归
void Invert_printf(LinkList L,LNode *p){
    if(p==L&&p->next==NULL)//表示空链表
        return;
    if(p->next==NULL){//链表最后一个结点
        printf("%d->",p->data);
        return;
    }

    Invert_printf(L,p->next);
    if(p!=L)//排除掉带头结点干扰
        printf("%d->",p->data);
    return;
}
// void main(){
//     LinkList L;
//     InitList_withHead(&L);
//     LNode *p=L;
//     for(int i=0;i<4;i++){
//         LNode *s=(LNode *)malloc(sizeof(LNode));
//         s->data=i+1;
//         s->next=NULL;
//         p->next=s;
//         p=p->next;
//     }
//     p=L;
//     printfLinkList2(L);
//     Invert_printf(L,p);
// }
  • 在带头结点的单链表L中删除一个最小值结点的高效算法,假设最小值结点是唯一的
#include "t2.h"

bool delete_min(LinkList *L,ElemType x){
    if((*L)->next==NULL)//空表
        return false;

    LNode *q=*L;//指向最小节点的前一个结点
    LNode *p=*L;//动态寻找最小值结点
    ElemType min=p->next->data;

    while(p->next!=NULL){
        if(p->next->data<min){
            q=p;
        }
        p=p->next;
    }
    p=q->next;
    q->next=p->next;
    free(p);
    return true;
}
  • 将带头结点的单链表就地逆置,所谓“就地”是指辅助空间复杂度为O(1)
#include "t2.h"

// 遍历找到尾结点,然后从头结点的位置开始逐个删除头结点,把删除的结点逐个头插法到尾结点
bool InvertLinkList(LinkList *L){
    if((*L)->next==NULL)
        return true;

    LNode *s=*L;//表示要删除的结点
    LNode *q=*L;//尾结点
    while(q->next!=NULL){
        q=q->next;
    }
    // 注意倒置后q结点就是第一个节点,所以循环结束的条件就是!=q
    while((*L)->next!=q){
        // 删除头结点
        s=(*L)->next;
        (*L)->next=s->next;
        // 头插法插入结点
        s->next=q->next;
        q->next=s;
    }
    return true;

}

// 尾插法建立单链表
void List_TailInsert(LinkList *L){
    int e;
    LNode *s,*r=*L;
    scanf("%d",&e);
    while(e!=999){
        s=(LNode *)malloc(sizeof(LNode));
        s->data=e;
        r->next=s;
        r=s;
        scanf("%d",&e);
    }
    // 如果这里不添加NULL,则r的后面就会随意指向一个地址,将出现大问题
    r->next=NULL;
}
void test5(){
    LinkList L;
    InitList_withHead(&L);
    List_TailInsert(&L);
    printfLinkList2(L);
    InvertLinkList(&L);
    printfLinkList2(L);
}
// void main(){
//     test5();
// }

解法2思路:解法1容易出现循环结束条件的错误,解法2就是将头结点单独摘下,其他结点作为一个单独链表,因为这个链表空间本身存在的,所以空间复杂度还是O(1),然后从第一个节点开始逐个删除不带头结点的单链表(拆下的新链表)的头结点,头插法插入到L中。
解法3思路:直接法next指针域修改为前一个指针,简单明了,只是需要多来几个节点指针LNode而已。

  • 有一个带头结点的单链表L,设计一个算法使其元素插入时递增有序
#include "t2.h"
// 循环找到当前链表中比x大的前向节点,执行在此前向节点后插入结点操作。这种算法的时间复杂度为
void incleaseOrder(LinkList *L,ElemType x){
    LNode *p=*L;//指向当前要插入的结点的前向结点

    while(p->next!=NULL){
        if(p->next->data>x)//如果p的后一个结点的数据大于x,直接结束循环
            break;
        p=p->next;
    }
    LNode *s=(LNode *)malloc(sizeof(LNode));
    s->data=x;
    s->next=p->next;
    p->next=s;
}
void insert(LinkList *L){
    ElemType x=0;
    scanf("%d",&x);
    while(x!=999){
        incleaseOrder(L,x);
        scanf("%d",&x);
    }

}
void test6(){
    LinkList L;
    InitList_withHead(&L);
    insert(&L);
    printfLinkList2(L);
}
void main(){
    test6();
}
  • 有一个带头结点的单链表L,设计一个算法使其元素递增有序(人话就是给单链表递增排序,一开始理解错写成上面的代码了)
    时间复杂度为O(n*n)
#include "t2.h"
// 将当前链表切分成两个,头结点指向的链表动态维护一个递增有序的链表,而另一个切分的链表用来逐个增加头结点指向的链表
void sort(LinkList *L){
    LNode *p,*s;//p用来获取一个需要增加的节点,s是为了防止第二个链表断链
    if((*L)->next==NULL)//空链表
        return;

    s=(*L)->next;
    (*L)->next=NULL;
    while(s!=NULL){
        p=s;
        s=s->next;
        incleaseOrder(L,p);//在L中按序插入结点p
    }
}
void incleaseOrder(LinkList *L,LNode *s){
    LNode *p=*L;//指向当前要插入的结点的前向结点

    while(p->next!=NULL){
        if(p->next->data>s->data)//如果p的后一个结点的数据大于x,直接结束循环
            break;
        p=p->next;
    }
    s->next=p->next;
    p->next=s;
}
// 尾插法建立单链表
// void List_TailInsert(LinkList *L){
//     int e;
//     LNode *s,*r=*L;
//     scanf("%d",&e);
//     while(e!=999){
//         s=(LNode *)malloc(sizeof(LNode));
//         s->data=e;
//         r->next=s;
//         r=s;
//         scanf("%d",&e);
//     }
//     // 如果这里不添加NULL,则r的后面就会随意指向一个地址,将出现大问题
//     r->next=NULL;
// }
void test6(){
    LinkList L;
    InitList_withHead(&L);
    List_TailInsert(&L);
    printfLinkList2(L);
    sort(&L);
    printfLinkList2(L);
}
void main(){
    test6();
}
  • 设一个带头结点的单链表中所有元素结点数据值都无序,试编写一个函数,删除表中所有介于给定两个值(作为函数参数给出)之间的元素的元素结点(若存在)
    思路:遍历单链表,动态维护一个当前结点的前向结点,如果当前结点的元素值满足要求,就删除,时间复杂度为O(n)

  • 给定两个单链表,编写算法找到两个链表的公共结点
    思路:暴力破解,遍历一个链表,每次遍历得到链表值都到另一个链表中遍历寻找是否有对应的值,时间复杂度为O(n*m),这种思路不能说不对,只能说没理解题目的精髓,题目说的是两个链表有公共结点,不仅仅是结点的值相同,而且指针域也要相同,换句话就是遍历找到第一个公共结点后,后面的节点就是重合的,两条链表就完全汇聚成一条,类似于Y结构。因此基于这种精髓的理解,代码写起来复杂度就低很多。

#include "t2.h"

LinkList sameNode(LinkList *L,LinkList *S){
    int len1=0;//L长度
    int len2=0;//S长度

    LNode *p=*L;
    LNode *q=*S;
    // 分别计算两个链表的长度
    while(p->next!=NULL||q->next!=NULL){
        if(p->next!=NULL){
            len1++;
            p=p->next;
        }
        if(q->next!=NULL){
            len2++;
            q=q->next;
        }
    }
    p=*L;
    q=*S;
    // 链表长度的差值,长的先遍历,因为公共链表长度一定是相等的
    while(len1>len2&&p->next!=NULL){
        p=p->next;
        len1--;
    }
    while(len1<len2&&q->next!=NULL){
        q=q->next;
        len2--;
    }
    // 相同长度为0
    if(p->next==NULL||q->next==NULL){
        return NULL;
    }
    while(p->next!=NULL){
        if(p->next->data==q->next->data){
            return p;
        }else{
            p=p->next;
            q=q->next;
        }
    }
    return NULL;
}

有感:算法不是要到出错误才去修改,而是在思考问题的时候,就已经把可能出现的错误给考虑到位,这是需要学习的。

严蔚敏版《数据结构》第二章线性表的算法C语言实现 首先,今天是中秋,明天是国庆,在这说声节日快乐啊。 说点题外话,今天出去走了走,看到药店就进去称体重了。尼玛,竟然轻了4斤,本来就是100刚出头,现在倒好,直接掉下100了。我想这可能是因为最近天天熬夜,而且最近学校还规定天天要去早读(直接导致睡眠不足),直到过了英语4级。唉,大一时不能考,不知今年12月能否考过啊。所以说各位还要注意休息啊,记得要早点休息。昨天晚上就11点后就因为写这个代码直到 阅读详情

相关推荐

数据结构题集(严蔚敏版)题目——第二章 线性表

数据结构题集(严蔚敏版)题目——第二章 线性表题目选作。

CocoaChen 2716

数据结构代码题--线性表

考研数据结构代码题,线性表的逆置,三次逆置

XUN__MLF的博客 663

数据结构第二章——线性表

线性表是数据结构这门课的基础,可以说是最重要的一个章节。学习这一章节之前应该学习了一定的C语言知识,至少能够看懂教材里面的伪代码。从本节起,分析数据结构将从数据结构的三要素展开(逻辑结构、存储结构、运算)提示:以下是本篇文章正文内容,下面案例可供参考由n个(n>=0)个数据特性相同的元素所构成的有限序列。(注意是有限长)循环链表有两种,一种是循环单链表,另一种是循环双链表,循环单链表就是在单链表的基础上将尾结点的指针域指向头结点;

2301_78118751的博客 1140

《数据结构》-第二章 线性表(知识点总结)

写在前面的话: 适应范围:《数据结构》复习总结系列适用于考研、期末考试、考前复习,小白新手 本系列参考书目: 《数据结构:c语言版》(严蔚敏) 关于写这个系列的原因:本人今年考研上岸,加上在校期间学习《数据结构》这门课时候,对数据结构有了好感,对这门课考试的考点把握还不错,所以不想荒废自己的知识,就计划用这种方式总结起来。如果有理解不到位的地方,欢迎在评论指出。我会尽量把知识点讲清楚后,按照考点进行总结。这个系列计划按照知识点总结后+考点总结,同时配有少部分习题(之...

大家一起进步叭 5497

D触发器(D Flip-Flop)与D锁存器(D Latch)

在解释这个练习题之前,我们先来简单回顾一下D触发器(D flip-flop)和D锁存器(D latch)的概念,以及它们在数字电路中的作用。这将帮助我们理解所提到的练习。

weixin_65190179的博客 9177

国标GB28181视频平台EasyGBS国标平台设备播放断流现象的问题解决方案

于是排查代码发现,当设备网络较差时,设备会断流,超过指定的时间30s(EasyGBS平台默认值),就会主动清除流媒体服务,但是redis中的流数据还在,而当设备在录像时,自动保活会从redis中取保活流数据,所以就会出现设备状态显示正在播放,但是流已经消失的情况。有用户反馈,在安防视频监控EasyGBS运行时,接入的设备刚开始可以正常播放,开启云端录像后,也没有停止和重播的操作,但是出现了视频流断流的现象。在设备进行播放保活时,对流信息进行判断,添加一个最后的处理流时间,如果超过指定时间就自动重新拉流。

EasyNTS的博客 436

408《数据结构》——第二章:线性表

线性表(Linear List)是具有相同数据类型的n (n ≥ 0)个数据元素的有限序列。。关键特性:元素个数有限。所有元素属于同一数据对象。元素之间存在严格的顺序关系。存在唯一的“第一个”元素(表头元素,无直接前驱)。存在唯一的“最后一个”元素(表尾元素,无直接后继)。除表头和表尾元素外,每个元素aᵢ(1 < i < n) 都有且仅有一个直接前驱aᵢ₋₁和一个直接后继aᵢ₊₁。一对一的线性关系。是线性结构的典型代表。基本操作(ADT定义的核心):构造一个空的线性表L。

jiaomongjun的博客 1521

DSP(数字信号处理器)技术概要

数字信号处理器(digital signal processor,DSP)是一种用于数字信号处理的可编程微处理器,它的诞生与快速发展,使各种数字信号处理算送得以实时实现,为数字信号处理的研究和应用打开了新局面,提供了低成本的实际工作环境和应用平台,推动了新的理论和应用领域的发展。目前,DSP技术在通信、航空、航天。雷达、工业控制、医疗、网络及家用电器等各个领域都得到了广泛应用。 1.1 DSP系统和芯片的结构特点1.1.1 DSP系统的基本结构通过传感数将非电物理量转换为模拟电信号,预处理一般包括放大器和滤

m0_46582485的博客 2万+

408数据结构第二章:线性表

本篇文章为408王道数据结构第二章线性表的全部笔记,代码大部分为自己敲出后对比修改,可能会有出入和错误,若发现欢迎指正

m0_74983085的博客 1062

以太网物理层协议整理(2)-万兆以太网

在万兆以太网标准化过程中,IEEE和10GEA(万兆以太网联盟)是两个最重要的组织。 万兆以太网标准和规范都比较繁多,在标准方面,首先有2002年的IEEE 802.3ae,后来也不断有新的万兆以太网规范推出,如2006年的IEEE 802.3an标准(10GBase-T)就推出了基于双绞铜线的万兆以太网规范,同样的IEEE 802.3aq标准推出了基于光纤的10GBase-LRM;2007年的

NowOrNever 3万+

02专升本数据结构笔记 第二章:线性表

线性表是由n(n≥0)个类型相同的数据元素a1,a2,…,an组成的有限序列,数据元素之间是一对一的关系,记作(由n(n≥0)个类型相同的数据元素,组成的有限序列,数据元素之间是一对一的关系,为线性表)可以理解为有序数组。

lxttzlove的博客 2349

STC51单片机串口多字节数据接收的优化策略

本文深入探讨了STC51单片机串口多字节数据接收的优化策略。针对数据丢包、粘包等常见痛点,核心思路是采用“缓冲队列+定时器超时”模式,将实时处理转变为“先收纳,后处理”。文章详细讲解了硬件初始化、中断服务程序优化(快速入队与激活超时裁判)以及主循环的非阻塞设计,并进阶介绍了环形缓冲区实现与错误处理,旨在构建稳定可靠的串口通信系统。

weixin_29264201的博客 374

《数据结构》-第二章 线性表(习题)

写在前面的话: 适应范围:《数据结构》复习总结系列适用于考研、期末考试、考前复习,小白新手 本系列参考书目: 《数据结构:c语言版》(严蔚敏) 关于写这个系列的原因:本人今年考研上岸,加上在校期间学习《数据结构》这门课时候,对数据结构有了好感,对这门课考试的考点把握还不错,所以不想荒废自己的知识,就计划用这种方式总结起来。如果有理解不到位的地方,欢迎在评论指出。我会尽量把知识点讲清楚后,按照考点进行总结。这个系列计划按照知识点总结后+考点总结,同时配有少部分习题(之...

大家一起进步叭 1万+

【nvidia-B200】实际生产报错NVRM: nvAssertFailedNoLog: Assertion failed: pIOVAS != NULL @ io_vaspace.c:601

升级 NVIDIA 驱动到 R545/R550 数据中心版本(解决 IOVA bug,这是性能差的根本原因);重启服务器(清理驱动残留资源,消除日志中的 NVRM 错误);验证 NVLink/PCIe 链路(确保 8 卡互联使用高速链路,而非单卡 PCIe 共享带宽)。完成这 3 步后,ncccl-test的all_reduce带宽应能提升至100GB/s 以上(取决于服务器的 NVLink/NVSwitch 配置),恢复正常性能。

jundao1997的专栏 652

Kong API Gateway 配置与深入

Kong是一个开源的、高性能的API网关,提供了一种简单易用的服务间路由、流量管理和安全防护方案,其最初起源于Nginx Inc.,但后迁移至Apache Software Foundation。Kong支持RESTful、GraphQL、TCP/UDP等协议,可与AWS Lambda、Azure Functions、Google Cloud Functions等云函数平台集成。其主要功能包括:服务发现与负载均衡、请求代理、身份认证与授权、缓存、日志记录、监控指标、灰度发布、多种插件等。

AI天才研究院 2286

数据结构第二章--线性表

博文为考研专业课408–数据结构学习笔记记录!如有错误敬请海涵!!! 线性表的定义和基本操作 线性表的定义 线性表是具有相同数据类型的n个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。若用L命名线性表,则其一般表示为: L=(a1,a2,a3…ai,…an) 注意 相同的数据类型的意思是每个数据元素所占空间一样大,并且数据元素的位序是从1开始,而数组从0开始。 线性表的基本操作 InitList(&L):初始化表。构造一个空的线性表。 Length(L): 求表长。返回线性表L的.

考研渣渣斌斌的博客 5232

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

数据结构-第二章(8)-线性表的应用(线性表合并)

数据结构 ⚡️数据结构-第一章 ⚡️抽象数据类型案例 ⚡️数据结构-第二章(1)-线性结构 ⚡️数据结构-第二章(2)-线性表的顺序表示和实现 ⚡️数据结构-第二章(3)-顺序表(含代码) ⚡️数据结构-第二章(4)-顺序表案例(含代码) ⚡️数据结构-第二章(5)-链式存储结构 ⚡️数据结构-第二章(6)-单链表基本操作的实现 数据结构-第二章(7)-双向链表和循环链表数据结构一、线性表的合并二、有序表的合并顺序表实现链表实现二、双向链表总结 一、线性表的合并 问题描述:   假设利用两个线性表La和

CltCj的博客 3987

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

数据结构第二章-线性表(详细知识点总结)

第二章 线性表 【考纲内容】 (一)线性表的定义和基本操作 (二)线性表的实现 顺序存储;链式存储;线性表的应用 【框架】 2.1 线性表的定义和操作 2.1.1 线性表的定义 线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,当n=0时,线性表是一个空表。若用L命名线性表,则其一般表示为                &nbs

疯子书生的博客 2万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

王道数据结构 | 第二章 线性表

王道数据结构整理 第二章线性表 顺序表 单链表 双链表 循环单/双链表 静态链表

emmm_Yeah的博客 1053

数据结构 第二章(线性表)

同一线性表中的元素必定具有相同的特性,即属于同一数据对象,相邻数据元素之间存在着序偶关系。由n(n≥0)个数据特性相同的元素构成的有限序列称为线性表,线性表中元素的个数n定义为线性表的长度,当n=0时称之为空表。对于非空的线性表或线性结构,其特点是:①存在唯一的一个被称作“第一个”的数据元素。②存在唯一的一个被称作“最后一个”的数据元素。③除第一个元素之外,结构中的每个数据元素均只有一个前驱。④除最后一个元素之外,结构中的每个数据元素均只有一个后继。​。

Zevalin的博客 1924

PTA数据结构与算法-第二章——线性表

文章目录第一章——褚论第二章——线性表第三章——栈与队列 第一章——褚论 第二章——线性表 第三章——栈与队列 对于顺序存储的长度为N的线性表,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。 T 题目字眼 “ 顺序存储 ” ,说明内存单元中分配的存储空间是连续的,所 以该线性表为数组形式存储,所以数组访问时,通过下标可随机访问,时间复杂度为O(1),而增加插入时,需要涉及大量元素的移动,所以时间复杂度为O(N)。 线性表采用链式存储表示时,所有结点之间的存储单元地址可以连续也可以

Eumenides_Suki的博客 9702

数据结构笔记(王道考研) 第二章:线性表

数据结构笔记(王道考研) 第二章:线性表

zimuzi2019的博客 3186

数据结构第二章线性表知识点总结

第二章 一、线性表的定义、性质、特点等 1.线性表中的数据元素可以是各种各样的,但同一线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列。 同一数据对象,相邻数据元素之间存在着序偶关系。 该序列中所含元素的个数叫做线性表的长度,用n表示,n>=0; n =0时,表示线性表是一个空表,即表中不包含任何元素。 2. 一个数据元素可以由若干个数据项组成。 数...

LOVE_Me__的博客 5883

数据结构 第二章 线性表 作业(已批改)

判断题 2-1-1 For a sequentially stored linear list of length N, the time complexities for query and insertion are O(1) and O(N), respectively. T F 顺序存储的线性表支持随机存取,所以查询的时间是常数时间,但插入需要把后面每一个元素的位置都进行调...

Jessieeeeeee的博客 1万+

【数据结构】第二章:线性表

【数据结构】第二章:线性表 一、线性表的定义和基本操作 1. 定义 2. 基本操作 二、顺序表 1. 顺序表的定义 2. 顺序表的实现 3. 顺序表的特点 4. 顺序表的插入 5. 顺序表的删除 6. 顺序表的查找 三、单链表 1. 单链表的定义 2. 单链表的实现 3. 单链表的插入 4. 单链表的删除 5. 单链表的查找 6. 单链表的建立 四、双链表 五、循环链表 1. 循环单链表 2. 循环双链表 六、静态链表 1. 静态链表的定义 2. 静态链表的初始化 3. 静态链表的插入 4. 静态链表的删除

iFulling的博客 1534
上一篇: 数据结构 线性表部分代码(c)
下一篇: 数据结构 栈和队列部分代码c
@@老胡
博客等级 码龄7年 291粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值