本篇介紹令人眼花撩亂的 Linked List 程式碼
上面是把完整程式碼分段解說
最下面才是完整程式碼
【圖 1 】 需要的元素
結構如下 (用類別來寫,當然你也可以把它變成struct)
class listNode{
public:
int data;
class listNode *nextPtr;
};
【圖 2 】 一般運作情況
【圖 3 】 一開始的情況
所以一開始宣告
listNode *startPtr=NULL;
【圖 4 】 要插入新Node的時候,要先創建一個 newPtr
對應程式碼:
listNode *newPtr;
newPtr= new listNode; //給予newPtr指標所指的地方一個記憶體位置
(*newPtr).data=get_data;
【圖 5 】 如何把資料插在第一個位置
(*newPtr).nextPtr=*sPtr;
*sPtr=newPtr;
【圖 6 】 如何刪除第一筆資料
delete *sPtr;
*sPtr=(*sPtr)->nextPtr;
【圖 7 】 如何顯示整個串列
while(currentPtr!=NULL){
std::cout<< currentPtr->data <<" -> "; /*顯示目前所在Node*/
currentPtr = currentPtr->nextPtr; /*走到下一個Node*/
}
【完整程式碼】
執行內容:
輸入任意數字,插入在最前面
輸入77,刪除最前面一個,並離開程式
#include<iostream>
class listNode{
public:
int data;
class listNode *nextPtr;
};
void insert(listNode **sPtr,int get_data){
listNode *newPtr;
newPtr= new listNode; //給予newPtr指標所指的地方一個記憶體位置
(*newPtr).data=get_data;
(*newPtr).nextPtr=*sPtr;
*sPtr=newPtr;
}
void del(listNode **sPtr){
delete *sPtr;
*sPtr=(*sPtr)->nextPtr;
}
void display(listNode *currentPtr){
while(currentPtr!=NULL){
std::cout<< currentPtr->data <<" -> "; /*顯示目前所在Node*/
currentPtr = currentPtr->nextPtr; /*走到下一個Node*/
}
printf("NULL");
}
int main(){
listNode *startPtr=NULL;
int num;
do{
display(startPtr);
std::cout<<std::endl;
std::cin>>num;
insert(&startPtr,num);
}while(num!=77);
del(&startPtr);
del(&startPtr);
display(startPtr);
system("pause");
return EXIT_SUCCESS;
}
留言列表