通過《易學c++》學習的鍊錶理解的總結:
在書中對鍊錶的實現和操作做了乙個形象的描述,首先介紹鍊錶是乙個順序相連線的鏈條,類似於自行車車鏈,一環套一環,鍊錶是乙個單向可遍歷的,只能通過從頭開始,逐個遍歷的過程來實現鍊錶節點(node)的查詢過程。
實現鍊錶,首先要明晰乙個節點的概念,乙個節點,首先要有乙個儲存資料的記憶體空間,然後包含乙個指向下乙個節點的指標。所以,定義乙個結構型別,命名為node。
struct node ;
char型別的data用來接收鍊錶節點上儲存的資料;
node結構的指標next,用來指向下乙個節點的位址,因為下乙個節點也是乙個node,儲存空間也是需要乙個node的大小,所以要用乙個節點指標指向,要是用個整形指標指向當然就錯了。
然後就是需要定義的方法,對待鍊錶,
首先要實現的是建立鍊錶,
然後要實現的是對鍊錶資訊的顯示,
然後要實現的是對鍊錶資訊的插入,
然後要實現的是對鍊錶資訊的刪除。
所以分別要定義以下的方法,
createlist();
showlist();
insertlist();
deletelist();
createlist();要實現的是建立乙個新的鍊錶,而鍊錶只需要返回乙個頭節點的位址就可以完成整個列表的操作了,這樣的情況下就只需返回乙個建立好的節點的位址就可以了。
列表建立需要知道頭結點,phead,
需要知道尾部節點,pend;
需要有乙個臨時節點用來傳遞資料,ptemp;
需要乙個變數來接受資料;
所以如下定義createlist:
node *createlist()
else if()
} }
while (c!=『#』);
return phead; };
showlist的實現,只是用來display這個鍊錶的內容,所以返回型別用void就可以了,設定乙個形參,用來傳遞要讀的那個鍊錶;
void showlist(node *head)
} 要想實現insert首先要實現的是乙個findlist的功能,就是要查詢到對應的節點,然後再返回該節點的指標。
node *findlist(node *head)
else
} coutreturn pfind; }
insertlist的實現,insertlist的過程是乙個插入的過程,應該是首先定位要插入的位置,這乙個通過鍊錶的搜尋實現,然後在需要插入的節點的位置,首先建立乙個新的node,ntemp,相當於開闢了乙個新的記憶體,用來儲存新插入的資料,ntemp->data=c;ntemp->next
insertlist(node *head)
// // main.cpp
// linklist //
// #include
using namespace std;
//以下**建立乙個節點的結構體;
struct node ;
node *create();//定義create方法,用來建立節點,返回的是乙個節點型別的指標;
void showlist(node *head);//顯示鍊錶內容的方法,引數為乙個節點的頭指標。
int main()
//建立鍊錶的方法實現
node *create()
else//如果head不是空的那麼就需要將ps的資訊轉移給pend,因為ps還要騰出來去指下乙個輸入時候的新的記憶體空間。
pend = ps;//在安排好倒數第二個的next指向之後,pend開始挪到最後的位置。
} }
while (temp != '#') ;
return head; }
void showlist(node *head)
cout< }
C 學習之鍊錶
1.1建立與遍歷鍊錶 includeusing namespace std struct student student head 定義頭結點 student create pend next null delete ps return head void showlist student head...
c 學習之鍊錶
一 建立鍊錶 鍊錶的遍歷 將三個學生的資訊以鍊錶形式表達 include using namespace std struct student message 首先定義乙個結構體,包含名字 年齡 下乙個人的位址 void main 3 定義第三個學生,這個節點是尾節點,不再指向下乙個節點 stude...
鍊錶學習 靜態鍊錶
struct linknode 鍊錶在指定位置插入與刪除元素不需要移動元素,只需要修改指標即可,而陣列刪除與加入元素則需要移動後面的元素,鍊錶相對於陣列來講,則多了指標域空間開銷,拿到鍊錶第乙個節點就相當於拿到整個鍊錶 鍊錶的分類 靜態鍊錶,動態鍊錶 單向鍊錶,雙向鍊錶,迴圈鍊錶,單向迴圈鍊錶,雙向...