当前位置:首页 » 服务存储 » 用顺序存储结构存储数组
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

用顺序存储结构存储数组

发布时间: 2022-04-15 04:27:27

① 程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构

不对,数组本身的存储结构是线性的,就是说它是连续存储的,但是数组中元素可以存储指针,就是指针型数组,它就可以利用数组处理非线性的数据。比如将一个链表每个结点的地址存入数组,那样访问数组,就是处理非线性的数据了

② 采用顺序存储结构(用动态数组)或链式存储结构,编写主函数演示顺序栈/链栈的基本操作

#include<iostream>
#include"stdlib.h"
usingnamespacestd;
#definestack_init_size100
#definestackincrement10
typedefintselemtype;
typedefintstatus;
typedefstruct{
selemtype*base;
selemtype*top;
intstacksize;
}sqstack;
statusinitstack(sqstack&s)
{
s.base=(selemtype*)malloc(stack_init_size*sizeof(selemtype));
if(!s.base)exit(0);
s.top=s.base;
s.stacksize=stack_init_size;
return1;
}
voidcreate_sqstack(sqstack&s)
{
inti,n;
cout<<"请输入栈的长度:"<<endl;
cin>>n;
cout<<"请输入栈中的元素:"<<endl;
for(i=0;i<n;i++){
cin>>s.top[i];}
s.top=s.base;
for(i=0;i<n;i++){
s.top=s.top+1;}
}
statuspush(sqstack&s,selemtypee)
{
if(s.top-s.base>=s.stacksize){
s.base=(selemtype*)realloc(s.base,(s.stacksize+stackincrement)*sizeof(selemtype));
if(!s.base)exit(0);
s.top=s.base+s.stacksize;
s.stacksize+=stackincrement;}
*s.top++=e;
return1;
}
statuspop(sqstack&s,selemtype&e)
{
if(s.top==s.base)return0;
e=*--s.top;
return1;
}
statusstackempty(sqstacks)
{
if(s.top==s.base)
return0;
else
return1;
}
voidconversion(intn)
{
sqstacks;inte;
initstack(s);
while(n){
push(s,n%2);
n=n/2;}
cout<<"二进制数:"<<endl;
while(stackempty(s))
{pop(s,e);
cout<<e;}
cout<<endl;
}
voidmain()
{sqstacks;inti,e,*p,n;
initstack(s);
create_sqstack(s);
cout<<"插入元素为:"<<endl;
cin>>e;
push(s,e);
p=s.top;
s.top=s.base;
cout<<"插入元素后的栈为:"<<endl;
for(i=0;i<p-s.base;i++){
cout<<*s.top<<"";
s.top=s.top+1;}
cout<<endl;
pop(s,e);
p=s.top;
s.top=s.base;
cout<<"删除的栈顶元素为:"<<endl<<e<<endl;
cout<<"删除栈顶元素后的栈为:"<<endl;
for(i=0;i<p-s.base;i++){
cout<<*s.top<<"";
s.top=s.top+1;}
cout<<endl;
cout<<"十进制数:"<<endl;
cin>>n;
conversion(n);
system("pause");
}

上学期正好做过。。

③ 用顺序表(一维数组)作存储结构 c语言编程

#include
<stdio.h>
typedef
struct{
int
data[100];
int
length;
}Seqlist;//定义Seq这个新的数据zd类型
void
creat(Seqlist
&L);//建立线性表
void
show(Seqlist
L);//显示线性表
int
main()
{
Seqlist
L;
L.length=0;//初始化线性表的长度为0
creat(L);
show(L);
return
0;
}
void
creat(Seqlist
&L)
{
int
a;
printf("请输入专要创建的元素的个数:\t");
scanf("%d",&a);
for(int
i=0;i<a;i++)
{
printf("请输入第%d个元属素\t",i+1);
scanf("%d",&L.data[i]);
L.length++;
}
}
void
show(Seqlist
L)
{
int
i;
printf("线性表中的元素为:\n");
for(i=0;i<L.length;i++)
printf("%d\t",L.data[i]);
printf("\n");
}

④ 数组是按照什么数据结构存储的

顺序存储结构,因为数组在空间上是连续的

⑤ 线性表的顺序存储结构和一维数组有什么区别哪个是静态存储空间

顺序表是计算机内以一维数组形式表示的线性表,
线性表有链式存储存与顺序储存两种方式:
1,顺序储存结构是指用一组地址连续的存储单元依次存储数据元素的线性结构。
2,链式存储是线性表采用指针连接的方式存储。
线性表的长度是随着线性表的插入删除操作的进行而变化的,在任意时刻线性表的长度小于等于数组的长度,线性表的顺序储存是动态的,而一维数组是静态的。

⑥ 顺序存储方式只能用于存储线性结构吗

不是。

顺序存储方式不仅能用于存储线性结构,还可以用来存放非线性结构,例如完全二叉树是属于非线性结构,但其最佳存储方式是顺序存储方式。

数据的逻辑结构包括线性结构、树、图、集合这四种,在线性结构里面又有线性表、栈、队列等等。而数据的存储结构只有两种:顺序存储结构和链式存储结构,这两种存储结构,前面一个是利用数据元素在存储器中的相对位置表示其逻辑结构,另外一个是用指针来表示其逻辑关系。

顺序存储结构

的主要优点是节省存储空间,因为分配给数据的存储单元全用存放结点的数据(不考虑c/c++语言中数组需指定大小的情况),结点之间的逻辑关系没有占用额外的存储空间。

采用这种方法时,可实现对结点的随机存取,即每一个结点对应一个序号,由该序号可以直接计算出来结点的存储地址。但顺序存储方法的主要缺点是不便于修改,对结点的插入、删除运算时,可能要移动一系列的结点。

⑦ (c数据结构)数组的顺序存储与实现,如何给数组一次输入全部数据.如scanf函数

//这个题有两个方法,第一个是手动赋值,第二个是自动赋值。
//复制直接可用,但我觉得,你还是自已动手写一下比较好。
//这样才能了解结构体。
//第一个手动赋值
#include<stdio.h>
struct stu
{
char base[5];
};
int main()
{
stu array;
int i; //定义一个整形,用于 循环
printf("请手动给结构体数组赋值\n");
for(i=1;i<=5;i++)
{
scanf("%d",&array.base[i]);//每次循环,随着i的值不断增加,使数组递增
}
printf("数组内容如下\n");
for(i=1;i<=5;i++)
{
printf("array.base[%d]=%d\n",i,array.base[i]);
}
return 0;
}
//这个题有两个方法,第一个是手动赋值,第二个是自动赋值。
//第二个自动赋值
#include<stdio.h>
struct stu
{
char base[5];
};
int main()
{
stu array;
int i; //定义一个整形,用于 循环
printf("这个是自动赋值\n");
for(i=1;i<=5;i++)
{
array.base[i]=i;//每次循环,随着i的值不断增加,使数组递增
}
printf("数组内容如下\n");
for(i=1;i<=5;i++)
{
printf("array.base[%d]=%d\n",i,array.base[i]);
}
return 0;
}

⑧ 数组的存储结构采用什么存储方式

顺序存储方式。

数组就是在内存中开辟一块连续的、大小相同的空间,用来存储数据。

连续:内存地址是连续的。如a是首地址,a+1就是第二个数据元素的地址,a+2是第三个。

大小相同:指每个数组元素所占的空间大小是相同的。((a+i)-(a+i-1)=定值 是多少?)

如: int a[]={1,2,3,4};

示例:

a a+1 a+2 a+3

1 2 3 4

a[0] a[1] a[2] a[3]

注意:数组名不能被赋值,因为它是个常量值。代表数组的首地址。

⑨ 利用数组建立该线性表的顺序存储结构

一、线性表的顺序表示

用一组地址连续的存储单元依次存储线性表的数据元素。C语言中的数组即采用顺序存储方式。

2000:0001
2000:0003
2000:0005
2000:0007
2000:0009
2000:0011
2000:0013
2000:0015
2000:0017
...
2000:1001
2000:1003
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1

a[9] 1
2
3
4
5
6
7
8
9

假设线性表的每个元素需占用l个存储单元,并以所占的第一个单元的存储地址作为数据元素的存储位置。则存在如下关系:

LOC(ai+1)=LOC(ai)+l

LOC(ai)=LOC(a1)+(i-1)*l

⑩ 一般情况下,数组采用顺序结构实现。这是为什么

这个和数组的定义和功能有关系。要实现随机存储必须满足地址的可计算性。顺序存储可以很容易的实现这个需求,因此,就采用顺序存储了。