當前位置:首頁 » 存儲配置 » 線性表順序存儲數據結構

線性表順序存儲數據結構

發布時間: 2022-08-06 22:06:49

『壹』 線性存儲結構就是順序存儲結構嗎線性表是線性存儲結構嗎

不是,他們的關系可以如圖所示。線性表包括順序存儲結構和鏈式存儲結構。

拓展資料:

線性表的劃分是從數據的邏輯結構上進行的。線性指的是在數據的邏輯結構上是線性的。即在數據元素的非空有限集中

(1)存在唯一的一個被稱作「第一個」的數據元素,(2)存在唯一的一個被稱作「最後一個」的數據元素,(3)除第一個外,集合中的每個數據元素均只有一個前繼元素,(4)除最後一個外,集合中的每個數據元素均只有一個後繼元素。

那麼對於線性表,從存儲結構上分,可以有順序存儲結構和鏈式存儲結構。順序存儲結構包括順序表、順序隊列和順序棧;鏈式存儲結構包括鏈表、鏈隊列和鏈棧。

『貳』 有序的線性表是不是順序存儲結構二分法查找的存儲結構僅限於線性表且是有序的這句話對不對

有序的線性表是順序存儲結構。二分法查找的存儲結構僅限於線性表且是有序的這句話是對的。

線性表的順序存儲結構,指的是用一段地址連續的存儲單元依次存儲線性表的數據元素。

順序存儲結構需要三個屬性:

存儲空間的起始位置:數組data,它的存儲位置就是存儲空間的存儲位置。

線性表的最大存儲容置:數組長度MaxSize。

線性表的當前長度:length。

二分法查找針對的是一個有序的數據集合,每次通過與區間的中間元素對比,將待查找的區間縮小為之前的一半,直到找到要查找的元素,或者區間被縮小為0

二分查找非常高效,假設數據大小是n,每次查找後數據都會縮小為原來的一半,也就是會除以2,最壞情況下,直到查找區間被縮小為空,才停止。

(2)線性表順序存儲數據結構擴展閱讀

二分法查找和普通查找的區別:

普通查找:對於數組和一個需要查找的元素來說,普通查找的原理很簡單,即為從數組的第一個元素到最後一個元素進行遍歷,如果第i個元素的值等於我們需要查找的值,那麼返回找到的角標i,否則返回-1表示沒有查找到。

二分法是從中間元素開始查找,假設整型數組為arr,要查找的元素為value,數組中間元素為arr[mid],若value小於arr[mid],則在左半邊繼續查找;若value大於arr[mid],則在右半邊繼續查找,如此循環,知道value等於arr[mid],返回的角標mid即為要找的元素的位置。

二分法查找和普通查找的優缺點分析

普通查找

優點:1)原理簡單,代碼容易實現。

2)不需要數組有序;

缺點:當元素個數很多時,效率較低。

二分法查找:

優點:效率比普通查找高;

缺點:要求數組必須是有序排列。

『叄』 線性表存儲結構有哪幾種

線性表存儲結構有2種,分別是順序存儲和鏈性存儲結構。
數據元素之間的關系有兩種不同的表示方法:順序映象和非順序映象,並由此得到兩種不同的存儲結構:順序存儲結構和鏈式存儲結構。數據的存儲結構是指數據的邏輯結構在計算機中的表示。
在計算機中用一組地址連續的存儲單元依次存儲線性表的各個數據元素,稱作線性表的順序存儲結構。
鏈接存儲結構是在計算機中用一組任意的存儲單元存儲線性表的數據元素(這組存儲單元可以是連續的,也可以是不連續的)。
順序存儲結構是存儲結構類型中的一種,該結構是把邏輯上相鄰的節點存儲在物理位置上相鄰的存儲單元中,結點之間的邏輯關系由存儲單元的鄰接關系來體現。由此得到的存儲結構為順序存儲結構,通常順序存儲結構是藉助於計算機程序設計語言(例如c/c++)的數組來描述的。

『肆』 數據結構試驗線性表的順序存儲結構是什麼

#include<iostream.h>
#include<stdlib.h>
#include <malloc.h>
#define OVERFLOW 0
#define OK 1
#define ERROR 0
#define LIST_INIT_SIZE 100//線性表存儲空間的初始增量
#define LISTINCREMENT 10 // ?
typedef struct{
int * elem;// 存儲空間基址
int length;//當前長度
int listsize;//當前分配的存儲容量
}SqList;
SqList L;
int InitList_Sq(SqList & L){
//構造一個新的線性表。
L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem)exit(OVERFLOW);//存儲容量失敗
L.length=0; //空表長度為0
L.listsize=LIST_INIT_SIZE;//存儲初始容量
return OK;
}//InitList_Sq
int LIstInsert_Sq(SqList & L,int i,int e){
//在順序線性表L中第i位置之前插入新的元素e
if(i<1||i>L.length+1) return ERROR;
if(L.length>=L.listsize){
int * newbase=(int *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(int));
if(!newbase)exit(OVERFLOW);
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
int * q=&(L.elem[i-1]);
for(int * p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;
*q=e;
++L.length;
return OK;
}
int ListDelete_Sq(SqList&L,int i,int &e)
{
if((i<1)||(i>L.length))return ERROR;
int *p=&(L.elem[i-1]);
e=*p;
int *q=L.elem+L.length-1;
for(++p;p<=q;++p)*(p-1)=*p;
--L.length;
return OK;
}
void main()
{
SqList L;
int i,n;
int e;
cout<<"輸入順序表的個數:"<<endl;
cin>>n;
int *p=(int *)malloc(n*sizeof(int));
InitList_Sq(L);
cout<<"輸入線性表"<<n<<"個元素的值"<<endl;
for(i=0;i<n;i++)
{
cin>>p[i];
L.elem[i]=p[i];
}
cout<<endl;
L.length=i;
cout<<endl;
cout<<"輸入要插入元素的值"<<endl;
cin>>e;
cout<<endl;
cout<<"輸入要插入的位置"<<endl;
cin>>i;
LIstInsert_Sq( L, i, e);
for(i=0;i<n+1;i++)
cout<<L.elem[i];
cout<<endl;
cout<<"輸入要刪除的位置"<<endl;
cin>>i;
ListDelete_Sq(L,i,e)
;for(i=0;i<n;i++)
cout<<L.elem[i];
free(p);

『伍』 線性表的存儲結構,在什麼情況下採用順序結構為什麼


看名字就差不多了吧
順序存儲結構就是用一組地址連續的存儲單元依次存儲該線性表中的各個元素。由於表中各個元素具有相同的屬性,所以佔用的存儲空間相同。因此,在內存中可以通過地址計算直接存取線性表中的任一元素。這種結構的特點是邏輯上相鄰的元素物理上也相鄰。用順序結構存儲的線性表稱作順序表。
線性表按鏈式存儲時,每個數據元素 (結點)的存儲包括數據區和指針區兩個部分。數據區存放結點本身的數據,指針區存放其後繼元素的地址 (沒有後繼元素時設置為空字元(Null).。只要知道該線性表的起始地址 (記錄在頭指針中),表中的各個元素就可通過其間的鏈接關系逐步找到

『陸』 線性表的順序存儲結構和線性表的鏈式存儲結構分別是

您好,

這道題的答案是B

首先解題需要了解線性表的定義,順序存儲結構和鏈式存儲結構的區別,他們分別如下:

資料擴展

定義:線性表(Linear List)是由n(n≥0)個數據元素(結點)a[0],a[1],a[2]…,a[n-1]組成的有限序列。

對於線性表而言,有如下幾點需要明確:

①數據元素的個數n定義為表的長度 = "list".length() ("list".length() = 0(表裡沒有一個元素)時稱為空表)

②將非空的線性表(n>=0)記作:(a[0],a[1],a[2],…,a[n-1])

③數據元素a[i](0≤i≤n-1)只是個抽象符號,其具體含義在不同情況下可以不同,一個數據元素可以由若干個數據項組成。數據元素稱為記錄,含有大量記錄的線性表又稱為文件。這種結構具有下列特點:存在一個唯一的沒有前驅的(頭)數據元素;存在一個唯一的沒有後繼的(尾)數據元素;此外,每一個數據元素均有一個直接前驅和一個直接後繼數據元素。

綜上所述,這道題目選擇B項。

『柒』 線性表若採用順序存儲結構時 要求內存中可用存儲單元的地址()

選A,最佳答案沒看清題吧?別人問的是採用順序存儲結構時
線性表的順序存儲結構,指的是用一段地址連續的存儲單位依次存儲線性表的數據元素

『捌』 線性表的順序存儲結構是以什麼來表示數據元素之間的邏輯關系的

線性表是最基本、最簡單、也是最常用的一種數據結構。線性表(linear list)是數據結構的一種,一個線性表是n個具有相同特性的數據元素的有限序列。

線性表主要由順序表示或鏈式表示。在實際應用中,常以棧、隊列、字元串等特殊形式使用。

順序表示指的是用一組地址連續的存儲單元依次存儲線性表的數據元素,稱為線性表的順序存儲結構或順序映像(sequential mapping)。它以「物理位置相鄰」來表示線性表中數據元素間的邏輯關系,可隨機存取表中任一元素。

由此得到的存儲結構為順序存儲結構,通常順序存儲結構是藉助於計算機程序設計語言(例如c/c++)的數組來描述的。

順序存儲結構的主要優點是節省存儲空間,因為分配給數據的存儲單元全用存放結點的數據(不考慮c/c++語言中數組需指定大小的情況),結點之間的邏輯關系沒有佔用額外的存儲空間。

採用這種方法時,可實現對結點的隨機存取,即每一個結點對應一個序號,由該序號可以直接計算出來結點的存儲地址。但順序存儲方法的主要缺點是不便於修改,對結點的插入、刪除運算時,可能要移動一系列的結點。

推薦課程:C語言教程。

線性表順序存儲結構的結構代碼:

#define MAXSIZE 20

typedef int ElemType;

typedef struct

{

ElemType data[MAXSIZE];

int length; // 線性表當前長度

} SqList;

順序存儲結構封裝需要三個屬性:

存儲空間的起始位置,數組data,它的存儲位置就是線性表存儲空間的存儲位置。

線性表的最大存儲容量:數組的長度MaxSize。

線性表的當前長度:length。

注意:數組的長度與線性表的當前長度需要區分一下:數組的長度是存放線性表的存儲空間的總長度,一般初始化後不變。而線性表的當前長度是線性表中元素的個數,是會變化的。

線性表順序存儲結構的優缺點

線性表的順序存儲結構,在存、讀數據時,不管是哪個位置,時間復雜度都是O(1)。而在插入或刪除時,時間復雜度都是O(n)。

這就說明,它比較適合元素個數比較穩定,不經常插上和刪除元素,而更多的操作是存取數據的應用。

優點:

無須為表示表中元素之間的邏輯關系而增加額外的存儲空間。

可以快速地存取表中任意位置的元素。

缺點:

插上和刪除操作需要移動大量元素。

當線性表長度變化較大時,難以確定存儲空間的容量。

容易造成存儲空間的「碎片」

『玖』 數據結構中關於線性表的順序存儲結構的一些問題。

在C語言中,數組名實際上就是指向首元的指針名,一個有100個元素的數組a,從本質上來說,就是從地址a開始向後100個元素的位置都是可用的。
因此可以用指針head來表示存放元素的位置。實際中通常是用malloc來分配連續的內存空間,並將起始地址返回給head:
head = (int*)malloc(sizeof(int)*100); //分配100個元素的空間,並令head指向其首地址
接下來可以用head[i]的方式訪問第i個元素,此時head表現得和數組相同。

熱點內容
c語言5常量 發布:2024-04-27 02:38:49 瀏覽:990
源碼怎麼搭建 發布:2024-04-27 02:33:44 瀏覽:96
java獲取參數 發布:2024-04-27 02:22:21 瀏覽:501
unixlinuxwindows 發布:2024-04-27 02:10:55 瀏覽:445
nginx禁止ip訪問網站 發布:2024-04-27 02:05:43 瀏覽:845
webrtc伺服器搭建哪家價格低 發布:2024-04-27 01:30:08 瀏覽:140
oracle資料庫無法啟動 發布:2024-04-27 01:29:20 瀏覽:613
倪萍超級訪問 發布:2024-04-27 01:23:29 瀏覽:705
java集合循環 發布:2024-04-27 01:17:18 瀏覽:593
解壓喪屍片 發布:2024-04-27 01:02:28 瀏覽:370