① 線性表的順序存儲結構和鏈式存儲結構分別適用於什麼場合
預先能夠確定線性表長度;數據間有一定的依賴關系;數據和位置有關系時一般工順序存儲方便,否則,動態分配空間,鏈式存儲方便,
② 線性表的存儲方式即可是順序方式
( T )1.線性表若採用鏈式存儲表示時所有結點之間的存儲單元地址可連續可不連續。
( T)2. 棧和隊列的存儲方式既可是順序方式,也可是鏈接方式。
( T )3.二維數組是其數組元素為線性表的線性表。
( T )4. 對於一棵非空二叉樹,它的根結點作為第一層,則它的第i層上最多能有2i—1個結點。
( F)5.線性表的順序存儲表示優於鏈式存儲表示。
( F )6. 具有12個結點的完全二叉樹有5個度為2的結點。
( F )7.線性表的邏輯順序與物理順序總是一致的。
( F )8. 線性表在順序存儲時,邏輯上相鄰的元素未必在存儲的物理位置次序上相鄰。
( T )9.每種數據結構都應具備三種基本運算:插入、刪除和搜索。
三、 單項選擇題
( C )1.數據在計算機存儲器內表示時,物理地址與邏輯地址相同並且是連續的,稱之為:
(A)存儲結構 (B)邏輯結構 (C)順序存儲結構 (D)鏈式存儲結構
( B )2.一個順序表第一個元素的存儲地址是100,每個元素的長度為2,則第5個元素的地址是 b
(A)110 (B)108 (C)100 (D)120
( D)3. 下面關於線性表的敘述中,錯誤的為()
A. 順序表使用一維數組實現的線性表B. 順序表必須佔用一片連續的存儲單元
C. 順序表的空間利用率高於鏈表D. 在鏈表中,每個結點只有一個鏈域
( C )4.請指出在順序表{2、5、7、10、14、15、18、23、35、41、52}中,用二分法查找關鍵碼12需做多少次關鍵碼比較。 (C)
A.2 B.3 C.4 D.5
( B )5. 在需要經常查找結點的前驅與後繼的場合中,使用 比較合適。
A. 單鏈表B. 雙鏈表C. 順序表D. 循環鏈表( B )
( B )6 向一個有127個元素的順序表中插入一個新元素並保持原來順序不變,平均要移動 個元素
(A)8 (B)63.5 (C)63 (D)7
( D )7. 判定一個隊列QU(最多元素為m0)為滿隊列的條件是_______
(A)QU->rear - QU->front = = m0 (B)QU->rear - QU->front -1= = m0
(C)QU->front = = QU->rear (D)QU->front = = QU->rear+1
( C )8. 若已知一個棧的入棧序列是1,2,3,…,n,其輸出序列為p1,p2,p3,…,pn,若p1=n,則pi為
(A)i (B)n=i (C)n-i+1 (D)不確定
( C )9.演算法分析的目的是:
A. 找出數據結構的合理性B. 研究演算法中的輸入/輸出關系
C. 分析演算法的效率以求改進D. 分析演算法的易讀性
( C )10按照二叉樹的定義,具有3 個結點的二叉樹有()種。
A.3 B.4 C.5 D.6
答案是正確的 呵呵 你這些題的答案我都有 還有你以後的答案我也有 要的話以後再問我要啊
③ 線性表的順序存儲結構是隨機存取的
可以參考下面幾種解釋
1、解釋一:
順序存儲結構的地址在內存中是連續的所以可以通過計算地址實現隨機存取,與此相對 鏈式存儲結構的存儲地址不一定連續,只能通過第個結點的指針順序存取
2、解釋二:
線性表的順序存儲結構可以通過線性表的首址加偏移的方法計算出來第i個數據的位置a+i*sizeof(單個結構)而線性表的鏈式存儲結構要訪問第i個數據,就必須先訪問前面的i-1個數據
(3)線性表順序存儲擴展閱讀:
線性表主要由順序表示或鏈式表示,在實際應用中,常以棧、隊列、字元串等特殊形式使用,順序表示指的是用一組地址連續的存儲單元依次存儲線性表的數據元素,稱為線性表的順序存儲結構或順序映像,順序存儲結構是隨機存取的。
鏈式表示指的是用一組任意的存儲單元存儲線性表中的數據元素,稱為線性表的鏈式存儲結構。它的存儲單元可以是連續的,也可以是不連續的。
④ 線性表的順序存儲的缺點
線性順序存儲的缺點:(1)插入或刪除的運算效率很低。在順序存儲的線性表中,插入或刪除數據元素時需要移動大量的數據元素;(2)線性表的順序存儲結構下,線性表的存儲空間不便於擴充;(3)線性表的順序結構不便於對存儲空間的動態分配。
⑤ 在實際的開發中,什麼時候用到線性表的順序存儲結構
順序存儲很常見的就是數組,但鏈式存儲我們很少直接使用的.
⑥ C語言線性表順序存儲
建鏈表的函數用引用就好了
#include"stdafx.h"
#include<stdio.h>
#include<stdlib.h>
//-------------------
#defineMAXSIZE100//Thelargestnumberofpeople
typedefintElemType;
typedefstruct
{
ElemTypedata[MAXSIZE];
ElemTypepassward[MAXSIZE];
intlength;
}seqList;
seqList*L;
voidCreaList(seqList*&L,int[MAXSIZE],intn);/////引用
voidPrintList(seqList*L,intn);//不一致
intmain(void)
{
intn=0,m=0;
inta[MAXSIZE];
do
{
if(n>MAXSIZE)
{
printf("Thenumberofpeopletoomuch,pleaseinputagain! ");
}
printf("Pleaseenterthenumberofpeople(upto%d):",MAXSIZE);
scanf_s("%d",&n);
}while(n>MAXSIZE);
printf("Pleaseentertheinitailpassword:");
scanf_s("%d",&m);
CreaList(L,a,n);
printf("--------printthelineartable-------- ");
PrintList(L,n);
printf("初始化成功... ");
system("pause");
}
voidCreaList(seqList*&L,inta[MAXSIZE],intn)/////引用
{
intiPassword;
L=(seqList*)malloc(sizeof(seqList));
for(inti=1;i<=n;i++)
{
L->data[i]=a[i];
printf("Pleaseenterthe%dpersonalpassword:",i);
scanf_s("%d",&iPassword);
L->passward[i]=iPassword;
}
L->length=n;
}
voidPrintList(seqList*L,intn)
{
for(inti=1;i<=n;i++)
{
printf("--------ID---------PASSWORD-------- ");
printf("%6d%5d ",L->data[i],L->passward[i]);
}
}
⑦ 線性存儲結構就是順序存儲結構嗎線性表是線性存儲結構嗎
不是,他們的關系可以如圖所示。線性表包括順序存儲結構和鏈式存儲結構。
拓展資料:
線性表的劃分是從數據的邏輯結構上進行的。線性指的是在數據的邏輯結構上是線性的。即在數據元素的非空有限集中
(1)存在唯一的一個被稱作「第一個」的數據元素,(2)存在唯一的一個被稱作「最後一個」的數據元素,(3)除第一個外,集合中的每個數據元素均只有一個前繼元素,(4)除最後一個外,集合中的每個數據元素均只有一個後繼元素。
那麼對於線性表,從存儲結構上分,可以有順序存儲結構和鏈式存儲結構。順序存儲結構包括順序表、順序隊列和順序棧;鏈式存儲結構包括鏈表、鏈隊列和鏈棧。
⑧ ⑴ 線性表的順序存儲結構是一種( )的存儲結構,線性表的鏈接存儲結構是一種( )的存儲結構
線性表的順序存儲結構是一種隨機存取的存儲結構
線性表的鏈式存儲結構,是一種物理存儲單元上非連續、非順序的存儲結構
⑨ 線性表的順序存儲結構是以什麼來表示數據元素之間的邏輯關系的
線性表是最基本、最簡單、也是最常用的一種數據結構。線性表(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++實現
線性表的順序存儲結構用C++實現代碼:
#include "pch.h"
#include <stdio.h>
#include <malloc.h>
//#define DATA int
typedef int DATA;
struct SNode
{
DATA data;
SNode* pNext;
};
SNode* g_pHead = NULL;
void AddHead(DATA data)
{
SNode* p = (SNode*)malloc(sizeof(SNode));
p->data = data;
p->pNext = g_pHead;
g_pHead = p;
}
void Print()
{
SNode* p = g_pHead;
printf("List:");
while (p)//當節點的地址不為NULL
{
printf("%d ", p->data);
p = p->pNext;
}
printf("
");
}
int main()
{
AddHead(1);
AddHead(2);
AddHead(3);
Print();
return 0;
}
程序運行結果如下:
(10)線性表順序存儲擴展閱讀:
雙向鏈表框架:
#pragma once
typedef void* POSITION;
typedef int DATA;
struct SNode
{
DATA data;
SNode *pPrev, *pNext;
};
class CList
{
SNode *m_pHead, *m_pTail;
int m_nCount;
public:
CList();
~CList();
void RemoveAll();
DATA GetNext(POSITION &pos);
DATA GetPrev(POSITION &pos);
void AddHead(DATA data);
void AddTail(DATA data);
void RemoveAt(POSITION pos);
};