當前位置:首頁 » 服務存儲 » 用順序存儲結構存儲數組
擴展閱讀
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

⑩ 一般情況下,數組採用順序結構實現。這是為什麼

這個和數組的定義和功能有關系。要實現隨機存儲必須滿足地址的可計算性。順序存儲可以很容易的實現這個需求,因此,就採用順序存儲了。