當前位置:首頁 » 存儲配置 » 實驗三線性表的鏈式存儲結構

實驗三線性表的鏈式存儲結構

發布時間: 2025-03-01 23:25:40

㈠ 線性表的兩種存儲結構分別為

線性表的兩種存儲結構分別如下:順序存儲結構和鏈式存儲結構。

這兩部分信息組成數據元素的存儲映像,稱為結點(node)。它包括兩個域;存儲數據元素信息的域稱為數據域;存儲直接後繼存儲位置的域稱為指針域。指針域中存儲的信息稱為指針或鏈。

時間有序表、排序表、和頻率有序表都可以看做是線性表的推廣。如果按照結點到達結構的時間先後,作為確定結點之間關系的,這樣一種線性結構稱之為時間有序表。

例如,在紅燈前停下的一長串汽車,最先到達的為首結點,最後到達的為尾結點;在離開時最先到達的汽車將最先離開,最後到達的將最後離開。這些汽車構成了一個隊列,實際上就是一個時間有序表。

㈡ 線性表的順序結構和鏈表結構各有什麼優缺點

順序表特點是利用物理上的相鄰關系表達出邏輯上的前驅和後繼關系,要求用連續的存儲單元順序存儲線性表中各元素,對順序表進行插入和刪除時需要通過移動數據元素來實現線性表的邏輯上的相鄰關系,從而影響其運行效率。

㈢ 用C語言編寫鏈式存儲結構下實現線性表的創建,插入,刪除,按值查找

#include <stdio.h>
#include <stdlib.h>

typedef struct LNode{
int data; //鏈表數據
struct LNode* next; //鏈表指針
}LNode,*LinkList;

/*頭插法-建立單鏈表*/
LinkList HeadCreate(LinkList la)
{
int num;
la=(LinkList)malloc(sizeof(LNode)); //建立頭結點
la->next=NULL;
scanf("%d",&num);
while(num!=10)
{
LNode *p=(LinkList)malloc(sizeof(LNode));
p->data=num;
p->next=la->next;
la->next=p;
scanf("%d",&num);
}
return la;
}

/*尾插法-建立單鏈表*/
LinkList TailCreate(LinkList la)
{
int num;
la=(LinkList)malloc(sizeof(LNode));
la->next=NULL;
LinkList s,r=la;
scanf("%d",&num);
while(num!=10)
{
s=(LinkList)malloc(sizeof(LNode));
s->data=num;
r->next=s;
r=s;
scanf("%d",num);
}
r->next=NULL;
return la;
}

/*單鏈表遍歷*/
void TravelList(LinkList la)
{
LinkList p=la->next;
while(p!=NULL)
{
printf("%d->",p->data);
p=p->next;
}
printf("\n");
}

/*單鏈表的按位查找*/
LinkList GetElem(LinkList la,int i)
{
int j=1;
LNode* p=la->next;
if(i<1)
return NULL;
while(p && j<i)
{
p=p->next;
j++;
}
return p;
}

/*單鏈表的按值查找*/
LinkList LocalElem(LinkList la,int e)
{
LNode* p=la->next;
while(p!=NULL && p->data!=e)
p=p->next;
return p;
}

/*單鏈表插入操作*/
bool InsertList(LinkList la,int i,int e)
{
//在la鏈表中的i位置插入數值e
int j=1;
LinkList p=la,s;
while(p && j<i)
{
p=p->next;
j++;
}
if(p==NULL)
return false;
if((s=(LinkList)malloc(sizeof(LNode)))==NULL)
return false;
s->data=e;
s->next=p->next;
p->next=s;
return true;
}

/*單鏈表刪除操作*/
bool DeleteList(LinkList la,int i)
{
int j=1;
LinkList p=la,q;
while(p && j<i) //p指向第i-1個元素
{
p=p->next;
j++;
}
if(p==NULL || p->next==NULL) //表示不存在第i-1個和第i的元素
return false;
q=p->next;
p->next=q->next;
free(q);
return true;
}

/*單鏈表的表長*/
int LengthList(LinkList la)
{
int nLen=0;
LinkList p=la->next;
while(p)
{
p=p->next;
nLen++;
}
return nLen;
}

/*單鏈表逆置*/
LinkList Reserve(LinkList la)
{
if(la==NULL || la->next==NULL)
return la;
LinkList p=la->next,q=p->next,r=q->next;
la->next=NULL;
p->next=NULL;
while(r!=NULL)
{
q->next=p;
p=q;
q=r;
r=r->next;
}
q->next=p;
la->next=q;
return la;
}

int main()
{
LNode la;
LinkList p;
p=HeadCreate(&la); //頭插法創建單鏈表
TravelList(p);
printf("%p\n",GetElem(p,1)); //獲得第1個結點地址
InsertList(p,2,10); //在鏈表的第2個位置插入元素10
TravelList(p);
DeleteList(p,3); //刪除鏈表的第3個元素
TravelList(p);
printf("%d\n",LengthList(p)); //獲得鏈表長度
p=Reserve(p);
TravelList(p);
return 0;
}

//運行結果
//5 6 12 7 8 14 9 3 2 5 14 10 頭插法創建鏈表
//14->5->2->3->9->14->8->7->12->6->5-> 顯示鏈表
//00382490 第一個結點的地址
//14->10->5->2->3->9->14->8->7->12->6->5-> 插入元素值為10的結點
//14->10->2->3->9->14->8->7->12->6->5-> 刪除第三個結點
//11 獲得鏈表長度
//5->6->12->7->8->14->9->3->2->10->14-> 鏈表逆置
//Press any key to continue

這是我寫的一個線性表鏈式存儲的綜合程序,包含了你所要的創建、刪除、插入、按值查找的功能,還有一些額外的功能。下面加註釋的是程序運行結果,你可以參考試著改改程序,讓程序更加完美。希望對你有幫助,呵呵!

㈣ 線性表順序存儲結構和鏈式存儲結構的定義,以及各自的有缺點,分別適合於哪些應用

定義

順序存儲結構就是用一組地址連續的存儲單元依次存儲該線性表中的各個元素。由於表中各個元素具有相同的屬性,所以佔用的存儲空間相同。
線性表按鏈式存儲時,每個數據元素 (結點)的存儲包括數據區和指針區兩個部分。數據區存放結點本身的數據,指針區存放其後繼元素的地址只要知道該線性表的起始地址表中的各個元素就可通過其間的鏈接關系逐步找到

優缺點
順序存儲需要開辟一個定長的空間,讀寫速度快,缺點不可擴充容量(如果要擴充需要開辟一個新的足夠大的空間把原來的數據重寫進去)

鏈式存儲無需擔心容量問題,讀寫速度相對慢些,由於要存儲下一個數據的地址所以需要的存儲空間比順序存儲大。

㈤ 線性表的鏈式存儲結構優於順序存儲結構

線性表的鏈式存儲結構優於順序存儲結構,這句話是錯誤的。

線性表的存儲結構:

線性表主要由順序表示或鏈式表示。在實際應用中,常以棧、隊列、字元串等特殊形式使用。順序表示指的是用一組地址連續的存儲單元依次存儲線性表的數據元素,稱為線性表的順序存儲結構或順序映像。它以「物理位置相鄰」來表示線性表中數據元素間的邏輯關系,可隨機存取表中任一元素。

鏈式表示指的是用一組任意的存儲單元存儲線性表中的數據元素,明純稱為線性表的鏈式存儲結構。它的存儲單元可以是連續的,也可以是不連續的。在表示數據元素之間的邏輯關系時,除了存儲其本身的信息之外,還需存儲一個指示其直接後繼的信息(即直接後繼的存儲位置),這兩部分信息組成數據元素的存儲映像,稱為結點(node)。

它包括兩個域:存儲數據元素信息的域稱為數激卜咐據域;存儲直接後繼存儲位置的域稱為指針域。指針域中存儲的信息稱為指針或鏈。



熱點內容
我的世界boat伺服器怎麼弄 發布:2025-03-02 02:26:47 瀏覽:501
Ftp以太坊分紅 發布:2025-03-02 02:23:46 瀏覽:597
騰訊視頻緩存沒了 發布:2025-03-02 02:21:30 瀏覽:643
變色龍編譯失敗證書不能為空 發布:2025-03-02 02:17:54 瀏覽:210
關鍵詞演算法 發布:2025-03-02 02:17:52 瀏覽:50
數據結構c語言版嚴蔚敏 發布:2025-03-02 02:17:51 瀏覽:526
手機問題密碼在哪裡修改 發布:2025-03-02 02:06:20 瀏覽:927
小米紅米4高配擴展存儲空間 發布:2025-03-02 02:01:23 瀏覽:437
開啟sql服務 發布:2025-03-02 02:01:14 瀏覽:755
如何將一個手機分成兩個配置 發布:2025-03-02 01:52:37 瀏覽:421