資料結構 鍊錶 上

2021-07-22 01:28:57 字數 1908 閱讀 1984

本來說要放假認認真真的學習演算法和計算機基礎,但是看到安卓華麗麗的介面還是義無反顧的奔入了android入門大軍中….(主要是懶的看演算法),不過在android學習中發現想要成為乙個合格的開發者(掙更多的錢~)光是會呼叫函式是遠遠不夠的,還是需要有乙個深厚的計算機基礎。所以決定沉下心來認真學習計算機基礎。

人生疏忽兮若白駒之過陳:成敗於斯煉表是一種非線性儲存結構,為什麼要說是非線性儲存結構呢,因為在鍊錶中的資料在計算機記憶體中不是以連續位址的方式儲存。而是如同大海中星羅棋布的島嶼一樣分散在計算機的記憶體中,然後通過某種類似橋梁的東西(下乙個節點的首位址)將這些記憶體中的島嶼鏈結成為了一條線上的各個節點,我們只需通過這坐橋(下乙個首位址),就可以訪問到所有的島嶼(資料)。

鍊錶有單鏈表和雙鏈表之分

下面是不同語言單鏈表的**實現

c語言:

#include

#include

#include

#include

//構造單鏈表中的節點

typedef struct node

node;

//根據需求建立鍊錶,引數一為鍊錶的頭節點,引數二位鍊錶的長度

int create(node **node,int

length)

trail->next=null;

*node=(*node)->next;

return

0; }

//為鍊錶新增方法

//預設從最後乙個元素刪除

int del(node *node)

else

}temp=node->next;

node->next=null;

free(temp);

}else

}}int add(node* node,int data)

else

temp=(node*)malloc(sizeof(node));

temp->addr=node->addr+1;

temp->data=data;

node->next=temp;

temp->next=null;

}}node* gettrail(node *node)

return trail;

}int main(int argc,char **argv)

c++

#include

#include

#include

using

namespace

std;

//使用結構體構造節點

typedef

struct node

node;

//使用類定義鍊錶的方法

class list

list(int length);

int getaddr();//獲取節點位置

int getdata(int addr);//獲取節點儲存的資訊

int add(int data);//增加節點

int del();//刪除節點

int getlength();//獲取鍊錶長度

};list::list(int length)

}int list::add(int data)

int list::del()

else

if(head->next==trail)

else

cout

<

length--;

}}int list::getlength()

int list::getdata(int addr)

else

head=head->next;}}

return -1;

}int main()

資料結構 鍊錶

鍊錶 what 就是一張鏈式儲存的表,是一種資料結構,是基礎,所以還是不要想有什麼用。具體呢?在c中就用結構體實現物件描述,然後通過函式來實現各個基本操作 c 則用類來表述,c中的結構體就可以看成c 中的類,然後通過類封裝各個操作步驟。這些操作實現後就需要 來測試,號稱demo,就是main函式裡面...

資料結構 鍊錶

鍊錶中的資料是以節點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。鍊錶的結點結構 data next data域 存放結點值的資料域 next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 以 結點的序列 ...

資料結構 鍊錶

一般的建立線性鍊錶有兩種 1.正序法 需要三個指標,head作為頭指標,pre作為前乙個指標,cur作為當前指標用來建立空間 2.倒序法,利用指標的插入,只需要兩個指標,不斷的往頭指標後插入新空間,不過插入的越早,離頭指標越遠,也就越後面輸出 1.線性鍊錶的建立及查詢刪除 include inclu...