本來說要放假認認真真的學習演算法和計算機基礎,但是看到安卓華麗麗的介面還是義無反顧的奔入了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...