导航:首页 > 研究方法 > 操作线性结构的5种方法是什么

操作线性结构的5种方法是什么

发布时间:2022-07-07 04:00:11

㈠ 数据结构 线性表的操作

#include<stdio.h>
#include<string.h>
#include<stdio.h>
#include<stdio.h>
#include<stdio.h>
#include<stdio.h>
#include<stdio.h>
#include<stdio.h>
#include<stdio.h>
#include<stdio.h>
#include<stdio.h>
#include<stdio.h>
Status InitList_Sq(SqList&L)
{
//构造一个空的线性表
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if (!L.elem) exit(OVERFLOW); //分配存储失败
L.length = 0; //空表长度为0
L.listsize = LIST_INIT_SIZE;//初始存储容量
return OK;

}//InitList.Sq
DestroyList(&L)
{

}
ClearList(&L)
{

}
ListEmpty(L)
{

}
ListLength(L)
{

}
GetElem(L,i,&e)
{

}
int LocateElem_Sq(SqList L,ElemType e,
Status(*compare)(ElemType,ElemType)) { //在顺序表中查询第一个满足判定条件的数据元素,若存在,则返回它的位序,否则返回0
i=1; // i的初值为第1元素的位序
p=L.elem; //p的初值为第1元素的存储位置
while(i<=L.length && !(*compare)(*p++,e))++i;
if(i<=L.length)return i;
else return 0;
} //LocateElem_SqPriorElem(L,cur_e,&pre_e)
PriorElem(L,cur_e,&pre_e)
{

}
NextElem(L,cur_e,&next_e)
{

}
Status ListInsert_Sq(SqList &L, int i, ElemType e)
{ //在顺序表L的第 i 个元素之前插入新的元素e,
// i 的合法范围为 1≤i≤L.length+1
q = &(L.elem[i-1]); //q 指示插入位置
for (p = &(L.elem[L.length-1]); p >= q; --p)
*(p+1)=*p; //插入位置及之后的元素右移
*q = e; //插入e
++L.length; //表长增1
return OK;
} //ListInsert_Sq
Status ListDelete_Sq(SqList &L, int i, ElemType &e)
{ if((i<1) || (i>L.length)) return ERROR;
//删除位置不合法
p=&(L.elem[i-1]); // p为被删除元素的位置
e=*p; //被删除元素的值赋给 e
q=L.elem+L.length-1; //表尾元素的位置
for(++p;p<=q;++p)*(p-1)=*p;
//被删除元素之后的元素左移
--L.length; //表长减1
} //ListDelete_Sq
ListTraverse(L,visit())
{

}
void main()
{
int i;
char ch;
while(1)
{
puts("1,构造一个空的线性表");
puts("2,销毁线性表L");
puts("3,将L重置为空表");
puts("4,判断表L是否为空表");
puts("5,给出线性表的长度");
puts("6,用e返回第i个元素的值");
puts("7,查找第一个返回给定数据元素的位序,compare()为数据元素比较函数
");
puts("8,确定并给出指定数据元素的前驱");
puts("9,确定并给出指定数据元素的后继");
puts("10,在第i个位置之前插入一个数据元素
");
puts("11,删除第i个数据元素");
puts("12,依次访问L的每个数据元素(遍历)");
puts("13,退出");
scanf("%d",i);
switch i
case 1:Initlist(&L);break;
case 2:DestroyList(&L);break;
case 3:ClearList(&L);break;
case 4:ListEmpty(L);break;
case 5:ListLength(L);break;
case 6:GetElem(L,i,&e);break;
case 7:LocateElem(L,e,compare());break;
case 8:PriorElem(L,cur_e,&pre_e);break;
case 9:NextElem(L,cur_e,&next_e);break;
case 10:ListInsert(&L,i,e);break;
case 11:ListDelete(&l,i,&e);break;
case 12:ListTraverse(L,visit());break;
case 13:

}
}

这个不是很全 还有些地方需要补充

㈡ JAVA线性结构的操作

现敲的,累死了~

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

线性结构是一个有序数据元素的集合。常用的线性结构有:线性表,栈,队列,双队列,数组,串。

非线性结构,数学用语,其逻辑特征是一个结点元素可能有多个直接前趋和多个直接后继。常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等)。

传统文本(例如书籍中的文章和计算机的文本文件)都是线性结构,阅读是需要注意顺序阅读,而超文本则是一个非线性结构。在制作文本时,可将写作素材按内部联系划分成不同关系的单元,然后用制作工具将其组成一个网型结构。阅读时,不必按线性方式顺序往下读,而是有选择的阅读自己感兴趣的部分。

在超文本文件中,可以用一些单词,短语或图像作为连接点。这些连接点通常同其他颜色显示或加下划线来区分,这些形式的文件就成为超文本文件。通过非线性结构,可能实现页面任意跳转。

有一个以上根结点的数据结构一定是非线性结构。

拓展资料

线性结构特征:

1、集合中必存在唯一的一个“第一个元素”;

2、集合中必存在唯一的一个”最后的元素“;

3、除最后元素之外,其它数据元素均有唯一的”后继“;

4、除第一元素之外,其它数据元素均有唯一的”前驱“。

数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。

如(a0,a1,a2,.....,an),a0为第一个元素,an为最后一个元素,此集合即为一个线性结构的集合。

相对应于线性结构,非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个后继。

㈣ 数据结构线性表基本操作

#include <iostream>
#include <cstdio>
#include <cstdlib>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10

using namespace std;
typedef int Elemtype;

typedef struct
{
Elemtype *elem;
int length;
int listsize;
} SqList;

int InitList_Sq(SqList &L)//L在下面发生变化,故用引用
//构造一个新的线性表
{
L.elem=(Elemtype *)malloc(LIST_INIT_SIZE*sizeof(Elemtype));
if(!L.elem)
exit(OVERFLOW);
L.length=0;//空表长度为0
L.listsize=LIST_INIT_SIZE;//初始存储容量
return OK;
}

int ListInsert_Sq(SqList &L,int i,Elemtype e)
//在顺序表L中的第i个位置插入新的元素e
//i的合法值为1<=i<=ListLength_Sq(L)+1
{
Elemtype * newbase;
Elemtype* p;
Elemtype* q;
if(i<1||i>L.length+1)//判断i值是否合法
return ERROR;
if(L.length>=L.listsize)//增加分配空间
{
newbase=(Elemtype*)realloc(L.elem,
(L.listsize+LISTINCREMENT)*sizeof(Elemtype));
if(!newbase)//存储分配失败
exit(OVERFLOW);
L.elem=newbase;//新基址
L.listsize+=LISTINCREMENT;//增加存储容量
}
/*for(int j=L.length;j>=i;j--)//元素右移
L.elem[j+1]=L.elem[j];
L.elem[i]=e;//插入e
L.length++;//表长增加
return OK;*/
q=&(L.elem[i-1]);//指针操作
for(p=&(L.elem[L.length-1]); p>=q; --p)
{
*(p+1)=*p;
}
*q=e;
++L.length;
return OK;

}

int main()
{
int i,n,x,k;
SqList La;
cout<<"请输入线性表La的长度:";
cin>>n;
cout<<"请输入线性表La中的元素:";
InitList_Sq(La);
for(i=0; i<n; i++)
{
cin>>La.elem[i];
La.length++; //如果不加这句,你要让La.length=n;
}

cout<<"请输入要插入到线性表La中的数字x和插入的位置k:";
cin>>x>>k;
ListInsert_Sq(La,k,x);
cout<<"线性表La=";
for(i=0; i<La.length; i++)//你的是i<n你插入元素的时候n没有变,不,
cout<<La.elem[i]<<" ";
return 0;
}
你自己看看

㈤ 线性的数据结构有哪几种各有什么特点

线性的数据结构有:线性表、栈、队列、双端队列、数组和串

1、线性表

线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。

特点:线性表中数据元素之间的关系是一对一的关系;线性表的逻辑结构简单,便于实现和操作。

2、栈

栈又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。栈是限定仅在表头进行插入和删除操作的线性表。

特点:栈是允许在同一端进行插入和删除操作的特殊线性表,栈可以用来在函数调用的时候存储断点,做递归时要用到栈。

3、队列

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。

特点:在队列的形成过程中,可以利用线性链表的原理,来生成一个队列;队列和栈一样只允许在断点处插入和删除元素。

4、双端队列

双端队列是指允许两端都可以进行入队和出队操作的队列,其元素的逻辑结构仍是线性结构。将队列的两端分别称为前端和后端,两端都可以入队和出队。

特点:对于双端队列,在序列的两端插入元素的时间复杂度均为常数,在中间插入元素的时间复杂度与插入点到最近序列端点的距离成正比。

5、数组

数组是用于储存多个相同类型数据的集合。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。

特点:数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起;数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。

6、串

串是零个或多个字符组成的有限序列。一般记S=‘a1a2....an ’其中,S是串名,单引号括起的字符序列是串值;ai(1〈=i〈=n)可以是字母,数字或其它字符。

特点:串中所包含的字符个数为该串的长度;长度为零的串称为空串,它不包含任何字符。

㈥ 线性结构的12种操作定义是固定的吗

线性结构
线性结构是一个有序数据元素的集合。
常用的线性结构有:线性表,栈,队列,双队列,数组,串。
非线性结构,
数学用语,其逻辑特征是一个结点元素可能有多个直接前趋和多个直接后继。

㈦ 1.什么是线性结构,树型结构,图型结构。2.什么是栈,队列。3.排序的方法有几种

1.什么是线性结构,树型结构,图型结构。2.什么是栈,队列。3.排序的方法有几种

㈧ 面试题:数据结构中常见的线性结构有哪些,他们之间有什么区别

常用的线性结构有:线性表,栈,队列,数组,串。线性表是多个相同元素组成的有限线性序列。栈是一种特殊线性表,它将插入和删除限制在表的一端进行,是一种后进先出表。队列也是一种操作受限的特殊线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。顺序存储结构在计算机内用一组连续的内存单元来存储数组。一堆数组本身就是顺序表结构,多维数组是一种特殊的线性结构。串是一种数据元素固定为字符的线性表。串上的操作是针对串的整体或串的某一部分子串进行的,而线性表是针对线性表上的某个数据元素进行的。

㈨ 线性结构有哪几种存储结构

数据元素之间的关系有两种不同的表示方法:顺序映象和非顺序映象,并由此得到两种不同的存储结构:顺序存储结构和链式存储结构。 顺序存储方法:它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现,由此得到的存储表示称为顺序存储结构。顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。 链接存储方法:它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为链式存储结构,链式存储结构通常借助于程序设计语言中的指针类型来实现。 顺序存储和链接存储是数据的两种最基本的存储结构。 在顺序存储中,每个存侗含有所存元素本身的信息,元素之间的逻辑关系是通过数组下标位置简单计算出来彭线性表的顺序存储中,若一个元素存储在对应数组中的下标位置为i,则它的前驱元着数组中的下标位置为i一1,它的后继元素在对应数组中的下标位置为i+1。在链接存个存储结点不仅含有所存元素本身的信息,而且含有元素之间逻辑关系的信息。 其中data表示值域,用来存储.一个元素。Pl,p2,…,Pill(1n≥1)均为指针域,每个韦值为其对应的后继元素或前驱元素所在结点(以后简称为后继结点或前驱结点)的存通过结点的指针域(又称为链域)可以访问到对应的后继结点或前驱结点,该后继结一《结点称为指针域(链域)所指向(链接)的结点。若一一个结点中的某个指针域不需要指f点,则令它的值为空,用常量N-LILL表示,NIJ】上在iostream.h中被定义为数值0。 数据的链接存储表示又被称为链接表。当链接表中的每个结点只含有一个指针称为单链表。

阅读全文

与操作线性结构的5种方法是什么相关的资料

热点内容
oppo手机的助手在哪里设置方法 浏览:532
尖头b2单边桥最简单方法如何对点 浏览:129
灯带安装方法直流 浏览:81
衬衣领子打结方法视频 浏览:973
修复冰晶使用方法 浏览:242
受益所有人的计算方法 浏览:876
黄豆怎么收购方法去杂 浏览:651
a5c用简便方法表示 浏览:262
正方形面积的计算方法 浏览:269
国标铝的检测方法 浏览:110
boa9连接wifi方法 浏览:861
尿素水溶液的检测方法 浏览:565
评职称里的技术创新方法怎么写 浏览:234
电脑取出电池充电方法 浏览:382
体育课快速热身方法 浏览:789
如何看出html的解密方法 浏览:769
弹力带健身使用方法 浏览:596
如何鉴定蜂蜜真假的方法 浏览:661
科目二教育原则和方法有哪些 浏览:850
肝结节怎么治疗最好方法 浏览:851