線性表的兩種實現

2021-08-08 12:07:01 字數 2169 閱讀 1814

最近新學了資料結構的線性表,這裡先簡單的介紹一下。

線性表是最基本、最簡單、也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的(注意,這句話只適用大部分線性表,而不是全部。比如,迴圈鍊錶邏輯層次上也是一種線性表(儲存層次上屬於鏈式儲存),但是把最後乙個資料元素的尾指標指向了首位結點)。

下邊介紹兩個乙個是線性表的順序表示和實現,另乙個是線性表的鏈式表示和實現。順序的實現是最簡單最常用的資料結構,它是用一段連續的位址依次來儲存表中的資料元素,我們自然就會聯想到c語言中的陣列,確實陣列就是這個方法的典型。而鏈式結構就是我們常說的鍊錶儲存,鍊錶儲存的位址並不是連續的位址來儲存的。這兩個各自都有各自的優點和缺點。順序表來說,可以相當方便的查詢出來其中某乙個元素對其進行修改。和順序表相比來說,鍊錶儲存在實現插入、刪除操作的時候,不需要移動大量的資料元素就可以輕鬆實現。你可以想,你在建立陣列的時候都會設定乙個值乙個大小,但是如果現在你的資料已經達到了陣列的最大值,你想再增加資料的時候,順序表就顯得很複雜。但是鏈式就可以直接再開闢乙個位址就可以了。各自都有各自的優點和缺點,具體使用哪種結構來儲存自己的資料,還要根據不同的程式來使用不同的儲存結構。下邊我先簡單介紹一下這兩個資料結構怎麼使用。

先用兩個資料結構實現兩個很基本的功能,建立資料結構進行儲存和輸出資料結構的內容。

#include

char v[30];

//上來你要設定乙個陣列來儲存你的資料,這個陣列的長度一定要大於你的資料個數。

int n;

void build();//宣告

兩個函式

乙個是建立這個陣列來儲存資料

void display();

//宣告輸出函式

void main()

//主函式

void build()//構造字母表 }

void display()//字母表的顯示

printf("\n"); }

這個程式很容易理解和程式設計,之後對於順序儲存的增刪改查的話會在下次部落格中寫道。下邊說一下鍊錶的基本操作,如何實現。

先說乙個函式malloc

malloc函式是一種分配長度為

num_bytes

位元組的記憶體塊的函式,可以向系統申請分配指定

size

個位元組的記憶體空間。

malloc

的全稱是

memory allocation

,中文叫動態記憶體分配,當無法知道記憶體具體位置的時候,想要繫結真正的記憶體空間,就需要用到動態的分配記憶體。

這個在鍊錶儲存中是經常用到的。

#include

#include

void build();

//和上個程式一樣先宣告兩個函式乙個用來建立鍊錶乙個用來輸出鍊錶

void display();

typedef struct

list //先定義乙個鍊錶結構

test;

//我個人理解的這個

test

就跟類裡邊的乙個物件一樣。

test *p,*q,*head;    

//定義三個變數

head

代表的是整個鍊錶的頭指標就是第乙個指標。剩下兩個指標之後會有各自的用途。

int n ;                          

int m=sizeof(test);    

//sizeof test求這個型別的記憶體長度方便給資料分配記憶體大小

void main()

void build()

p->data=i+'a'-1;

//給最後乙個資料賦值,有的人問,既然迴圈之後你還少乙個資料沒有賦值,那為什麼不把迴圈再多一次,不把

i<=26

呢,其實很好理解,因為這個資料的下乙個資料為空,所以就是下乙個語句,他的指標位置是空的,但是你如果要是在迴圈中他的指標又指向了下乙個位址了。

p->next=null ;

//因為接下來已經沒有資料了,所以他的指標位置是空}

void display()         

printf("%c\n",p->data);

//依然這是最後乙個資料 }

這兩個程式很簡單,很入門。對於這兩種方法的增刪改減我會盡快完成發出來,供大家學習。

有問題可以聯絡qq:

742832731

線性表的兩種實現 順序表和煉表 C

ifndef adt h define adt h 線性表adt template class list 賦值運算子 list const list 複製建構函式 public list 預設建構函式 virtual list 析構函式 清空所有元素 virtual void clear 0 在當前...

線性表實現

僅由乙個結構體組成,定義及實現如下所示 struct order list typedef struct order list list 指向該結構體的指標 初始化 list initial 查詢元素x的下標 intfind list l,elementtype x 在位置p前插入元素x bool ...

線性表的實現

線性表 liner list 線性表的順序儲存及操作實現 所謂順序儲存就是把線性表的各元素依次順序地存放倒計算機記憶體中的一組位址連續的儲存單元。採用順序儲存的線性表又叫順序表。順序表是一種隨機訪問的儲存結構。順序表的操作實現 define maxlen 100 tpyedef struct lis...