精华内容
下载资源
问答
  • 什么是线性结构,什么是非线性结构

    万次阅读 多人点赞 2019-06-30 18:16:47
    常用的线性结构有:线性表,栈,队列,双队列,数组,。 非线性结构,其逻辑特征是一个结点元素可能有多个直接前趋和多个直接后继。常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等)。 一、线性结构...

    什么是线性结构,什么是非线性结构?
    线性结构是一个有序数据元素的集合。常用的线性结构有:线性表,栈,队列,双队列,数组,串。
    非线性结构,其逻辑特征是一个结点元素可能有多个直接前趋和多个直接后继。常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等)。

    一、线性结构:

    1、线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。

    2、线性结构拥有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的,链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息。

    3、线性结构中存在两种操作受限的使用场景,即队列和栈。栈的操作只能在线性表的一端进行,就是我们常说的先进后出(FILO),队列的插入操作在线性表的一端进行而其他操作在线性表的另一端进行,先进先出(FIFO),由于线性结构存在两种存储结构,因 此队列和栈各存在两个实现方式。

    二、非线性结构:

    非线性结构中各个数据元素不再保持在一个线性序列中,每个数据元素可能与零个或者多个其他数据元素发生联系。根据关系的不同,可分为层次结构和群结构。

    常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图。(其中多维数组是由多个一维数组组成的,所以不再是线性结构)。

    拓展资料:

    数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。

    展开全文
  • 线性结构

    千次阅读 2017-04-16 21:39:04
    线性结构字符是一种特殊的线性表,它的特殊性在于线性表的数据元素限定为字符。1. 几个常用的操作#ifndef _VSTRING_H_ #define _VSTRING_H_#include #include #include<malloc.h>#define MAXSIZE 100int str...

    线性结构之串

    字符串是一种特殊的线性表,它的特殊性在于线性表的数据元素限定为字符串。

    1. 几个常用的操作

    • 得到串的长度
    • 截取字符串
    • 比较两个串是否相等
    • 串连接
    • 删除子串
    #ifndef _VSTRING_H_
    #define _VSTRING_H_
    
    #include<stdio.h>
    #include<string.h>
    #include<malloc.h>
    
    #define MAXSIZE 100
    
    int strLength(char *s);             //得到串的长度 
    void subString(char *opt, char* res, int left, int right);  //截取字符串 
    int strCompare(char *opt, char *res);           //比较两个串是否相等
    void strCat(char *res, char* opt);              //将串opt连接在res之后 
    void strAssign(char *res, char* opt);           //使串res为删除子串opt后的串值 
    
    void strAssign(char *res, char* opt) {
        char *p, *q;
    
        p = strtok(res, opt);
        q = strtok(NULL, opt);
        strCat(p, q);
        res = p;
    }
    void strCat(char *res, char* opt) {
        strcat(res, opt);
    }
    int strCompare(char *opt, char *res) {
        return strcmp(opt, res);   //返回值等于0的时候说明两个串是相等的 
    }
    void subString(char *opt, char* res, int left, int right) {
        int num = strLength(res);
        int i, j = 0;
    
        for(i = left; i < right; i++) {
            opt[j++] = res[i];
        }
        opt[j] = '\0';
    }
    
    int strLength(char *s) {
        return strlen(s);
    }
    
    #endif

    2. 找到串S中串T的位置,并返回次数

    #include "vstring.h"
    
    int deleteSubstring(char *s, char *t);
    int deleteSubstring(char *s, char *t) {
        int i = 0, n = 0, k = 0; 
        char tmp[MAXSIZE];
        int res[MAXSIZE]; 
    
        //如果t的长度比s还大,就出错了
        int len1 = strLength(s);
        int len2 = strLength(t);
    
        if(len1 < len2) {
            return -1;  //出错 
        } 
        //在s中可以划分出len1-len2+1个长度等于t的子串 
        while(i < len1-len2+1) {
    
            subString(tmp, s, i, i+len2);
    
            if(strCompare(tmp, t) == 0) {
                res[k++] = i;
                n++;
            }
            i++;
        }   
    
        for(i = 0; i < k; i++) {
            printf("%d ", res[i]);
        }
        printf("\n");
        return n;   
    }
    
    void main(void) {
        char s[MAXSIZE] = "abcdefgbcde78bcde223434bcde99";
        char t[MAXSIZE] = "bcde";
        int num = deleteSubstring(s, t);
        printf("%d\n", num);
    }

    3. 修改常用的操作strAssign

    之前的strAssign函数只能用去在S字符串只出现一次T的情况,当S中的T的次数多于1时,上面的函数就不适用了,现将该函数修改如下:

    void strAssign(char *res, char* opt);
    
    void strAssign(char *res, char* opt) {
        int num;
        char head[MAXSIZE], tail[MAXSIZE];
    
        char *index = strstr(res, opt); 
        num = strLength(res) - strLength(index);
        subString(head, res, 0, num);
    
        subString(tail, res, num+strLength(opt), strLength(res));
        strCat(head, tail);
        strcpy(res, head);
    }

    4. 完成在S串中删除T串的操作

    #include "vstring.h"
    
    int deleteSubstring(char *s, char *t);
    
    int deleteSubstring(char *s, char *t) {
        int i = 0, n = 0, k = 0; 
        char tmp[MAXSIZE];
        int res[MAXSIZE];
        char ss[MAXSIZE]; 
    
        strcpy(ss, s);
    
        //如果t的长度比s还大,就出错了
        int len1 = strLength(s);
        int len2 = strLength(t);
    
        if(len1 < len2) {
            return -1;  //出错 
        } 
        //在s中可以划分出len1-len2+1个长度等于t的子串 
        while(i < len1-len2+1) {
            subString(tmp, s, i, i+len2);
    
            if(strCompare(tmp, t) == 0) {
                res[k++] = i;
                strAssign(ss, t);
                n++;
            }
            i++;
        }   
    
        for(i = 0; i < k; i++) {   //输出下标 
            printf("%d ", res[i]);
        }
    
        printf("\n%s\n", ss);
        return n;   
    }
    
    void main(void) {
        char s[MAXSIZE] = "abcdefgbcde78bcde223434bcde99";
        char t[MAXSIZE] = "bcde";
        int num = deleteSubstring(s, t);
        printf("%d\n", num);
    }

    在上面的代码上添加了一些输出的提示内容,结果如下:
    这里写图片描述

    虽然折腾的时间比预期的有点长,但还是实现了,代码下载地址: http://download.csdn.net/detail/dear_mr/9815973

    展开全文
  • 什么是线性结构、非线性结构 数据结构分类大多可以有三种分类方式,分别是逻辑结构、物理结构、存储结构。一般来讲大多数都是以逻辑结构进行划分的。 线性结构 简单地说,线性结构就是表中各个结点具有线性关系。...

    什么是线性结构、非线性结构

    数据结构分类大多可以有三种分类方式,分别是逻辑结构、物理结构、存储结构。一般来讲大多数都是以逻辑结构进行划分的。

    线性结构

    简单地说,线性结构就是表中各个结点具有线性关系。如果从数据结构的语言来描述,线性结构应该包括如下几点:
    1、线性结构是非空集。
    2、线性结构有且仅有一个开始结点和一个终端结点。
    3、线性结构所有结点都最多只有一个直接前趋结点和一个直接后继结点。

    数组(Array)、栈( Stack)、队列(Queue)、链表( Linked List)等数据的逻辑结构都属于线性表。

    非线性结构

    简单地说,非线性结构就是表中各个结点之间具有多个对应关系。如果从数据结构的语言来描述,非线性结构应该包括如下几点:
    1、非线性结构是非空集。
    2、非线性结构的一个结点可能有多个直接前趋结点和多个直接后继结点。

    树( Tree)、图(Graph)、堆(Heap)、散列表(Hash)等数据的逻辑结构都属于非线性结构。

    展开全文
  • 线性结构和非线性结构

    千次阅读 多人点赞 2019-01-11 14:04:59
    常用的线性结构有:线性表,栈,队列,双队列,数组,。 非线性结构中各个数据元素不再保持在一个线性序列中,每个数据元素可能与零个或者多个其他数据元素发生联系。根据关系的不同,可分为层次结构和群结构。 ...

    线性结构和非线性结构
    在这里插入图片描述
    线性结构是一个有序数据元素的集合。 其中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。
    常用的线性结构有:线性表,栈,队列,双队列,数组,串。

    非线性结构中各个数据元素不再保持在一个线性序列中,每个数据元素可能与零个或者多个其他数据元素发生联系。根据关系的不同,可分为层次结构和群结构。
    常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图。(其中多维数组是由多个一维数组组成的,所以不再是线性结构)

    线性结构特点:
    1.集合中必存在唯一的一个"第一个元素";
    2.集合中必存在唯一的一个"最后的元素";
    3.除最后元素之外,其它数据元素均有唯一的"后继";
    4.除第一元素之外,其它数据元素均有唯一的"前驱"。
    数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。
    如(a1,a2,a3,…,an),a1为第一个元素,an为最后一个元素,此集合即为一个线性结构的集合。
    相对应于线性结构,非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个后继。

    展开全文
  • 线性结构

    2019-04-27 16:50:11
    常用的线性结构有:线性表,栈,队列,双队列,数组,。 关于广义表,是一种非线性的数据结构。 常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等) 线性结构包含的内容 线性表,栈,队列,, 什么是...
  • 数据结构:线性结构和非线性结构的理解

    万次阅读 多人点赞 2019-03-02 22:54:09
    我们这里主要说一下线性结构和非线性结构 1. 线性结构 线性结构是什么? 数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。线性结构是一个有序数据元素的集合。 线性结构特点: 线性结构...
  • 常用的线性结构有:线性表,栈,队列,双队列,数组,。 非线性结构,数学用语,其逻辑特征是一个结点元素可能有多个直接前驱和多个直接后继。常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等)。 ...
  • [数据结构]线性结构——

    千次阅读 2015-07-08 20:32:09
    计算机的硬件结构主要是反映数值计算的要求,因此,字符的处理比具体数值处理复杂。 类型的定义 的基本概念 (字符):是零个或多个字符组成的有限序列。记作: S=“a1a2a3...”,其中S是名,ai(1≦i≦n)是...
  • 1.简述线性结构和非线性结构的差别

    千次阅读 2020-02-29 23:25:15
    1.数据结构 2.逻辑结构分为线性结构和非线性结构 ...线性结构:线性表、栈、队列、字符、数组、广义表。 (2)非线性结构每个元素可能与零个或者多个数据元素有着联系。 非线性结构:树,图。 ...
  • 数据结构的定义: 一种是数据结构的逻辑层面:数据结构的逻辑结构 ...线性结构–>线性表 栈 队列 及数组 非线性结构–>树形结构 图形结构 数据的存储结构: 顺序储存 链式存储 索引存储 散列存储 数据...
  • 线性结构是什么

    2020-11-20 16:17:47
    线性结构分为:线性表,栈,队列
  • 以下数据结构中,()是非线性数据结构A:树(二叉树) B:字符 ...常用的线性结构有:线性表,栈,队列,双队列,数组,。 常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图。
  • 常用的线性结构有:线性表,栈,队列,双队列,数组,。其特点是数据元素之间存在一对一的线性关系。(又称为字符,是一种特殊的线性表,其特殊性体现在数据元素是一个字符,也就是说是一种内容受限的线性表...
  • 浅谈线性结构和非线性结构的区别

    千次阅读 2019-09-05 15:29:19
    在讲线性结构和非线性结构之前,我们必须了解数据结构是什么,它包含什么内容,现在我用一个图大概的表示一下。 数据结构就是一种计算机存储的方式,比如说磁盘,磁盘是用链式存储的,这样可以节省内存空间。...
  • 常用的线性结构有:线性表,栈,队列,双队列,数组(一维数组),。 相对应于线性结构,非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个后继。 如树,表,多维数组等 广义表是非线性结构的,它...
  • 线性结构说明

    2018-01-22 20:58:13
    常用的线性结构有:线性表,栈,队列,双队列,数组,。 关于广义表,是一种非线性的数据结构。 常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图。 特征 1.集合中必存在唯一的一个...
  • 线性结构之数组

    千次阅读 2013-07-17 12:31:45
     把所有节点用一根直线起来而形成的一种数据结构称为线性结构。  今天我想谈谈线性结构中的数组。大家都知道数组是连续存储的一种线性结构,而数组名为该数组元素的首地址。如int a[3]={1,2,3};a就等价于&a[0],...
  • 数据结构:二、线性结构

    千次阅读 2018-04-11 00:06:56
     线性结构包括线性表、栈和队列、字符、数组、广义表。其中线性表是典型的、最基本、也是最常用的一种线性结构。一、线性表:由n(n&gt;=0)个数据特性相同的元素构成的有限序列。其中n定义为线性表的长度,n...
  • 在讲线性结构和非线性结构之前,我们必须了解数据结构是什么,它包含什么内容,现在我用一个图大概的表示一下。 数据结构就是一种计算机存储的方式,比如说磁盘,磁盘是用链式存储的,这样可以节省内存空间。...
  • 数据结构(一)线性存储结构

    千次阅读 2019-06-13 14:05:52
    线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。 线性结构拥有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的,链式存储...
  • 线性结构 -- 栈和队列

    千次阅读 2018-10-18 21:58:21
    常用的线性结构有:线性表,栈,队列,双队列,数组,。 常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图。 特征: 1.集合中必存在唯一的一个"第一个元素"; 2.集合中必存在唯一的...
  • 线性和非线性数据结构分类

    千次阅读 2017-03-01 15:29:15
    数据结构按逻辑和存储结构,可以分为不同的类型  按逻辑可以分为以下三种: ...线性结构 是一个有序的数据元素集合,除第一个元素和最后一个元素外,其他元素与元素之间是首尾相接的,所以称之为线性结构。  
  • 数据结构——线性结构(哈希表)

    千次阅读 2018-09-25 09:52:00
    数据结构——线性结构(哈希表) 一、直接寻址表  如果某应用要用到一个动态集合,其中每个元素都是全域U={0,1….,m}中的一个关键字 为表示动态集合,使用数组。称为直接寻址表,记为T[m],其中...
  • 严格意义上讲,存储结构也是一种线性存储结构,因为字符中的字符之间也具有"一对一"的逻辑关系。只不过,与之前所学的线性存储结构不同,串结构只用于存储字符类型的数据。 无论学习哪种编程语言,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 94,243
精华内容 37,697
关键字:

串是线性结构吗