資料儲存方式分為靜態資料結構及動態資料結構,而鏈結串列為動態記憶體配置之核心。如下圖,鏈結串列由乙個以上的節點(node)組成,每個節點至少會有兩個字段,分別存放資料及指標,好像一節火車箱,資料欄存放資料,指標欄存放接合車子間的卡榫。
動態記憶體配置是指在執行階段才要求系統配置一塊記憶體空間,其中包括兩個運運算元
(1) 運運算元new
利用new建立物件時會向系統要一塊記憶體空間,並回傳該記憶體的起始位置,若記憶體空間不足,則記憶體配置失敗並傳回乙個空指標(null),宣告方式如下例:
double * fptr = new double;
若為陣列如下:
double * fptr = new double [n];
(2) 運運算元delete
delete 可將空間釋放並歸還給系統。如下例:
delete fptr;
或當陣列時
delete fptr ;
考題:請說明鏈結串列基本原理
如下圖為單向鏈結串列,其欄位至少包括資料字段及鏈結字段。
今嘗試以c++處理學生成績問題如下表
程式碼如下
#include
using std::cout;
using std::cin;
using std::endl;
class linkedlist
;int main()
cout<<"the students grade "< cout<<"no\tname\tgrade\n< ptr = delptr;//move ptr to the first item
while (ptr != null)
return 0;
}程式執行原理
(a)資料加入
1. 建立新節點
2. ptr = delptr
3. 建立新節點
4. 連線兩個節點
5. ptr = ptr->nptr;
6. 重複3、4及5直到完成輸入
考題:1. 請以鏈結串列建立乙個程式,程式能輸入學生座號、姓名及成績,同時還能夠於鏈結串列結束時自動將記憶體排除。
2. 說明上題鏈結串列之原理。
依據所刪除的節點位置會有三種不同情形:
(1) 刪除串列第乙個節點
top = head;
head=head->next;
delete top;
(2) 刪除串列內的中間節點
y = ptr->next
ptr->next = y->next;
delete y;
(3) 刪除串列內的最後乙個節點
ptr->next = tail;
ptr->next=null:
delete tail;
考題:請說明刪除鏈結串列節點有哪三種情形,試以程式及圖形說明之。
(4) 範例說明
本程式於輸入-1時就可以刪除成績,輸入其他整數資料時會進行資料比對。
/*[示範]:利用鏈結串列來建立、刪除及列印學生成績*/
#include
#include
#include
#include //使用亂數的表頭檔
using namespace std;
struct list
;list * createlist(list *, int [2], char * );
void delnode(list *);
list del_ptr(list *,list *);
void print(list *);
int main()
,,,,,,,,,,,};
srand((unsigned)time(null));//以時間為亂數的種子
cout<<"座號成績座號成績座號成績座號成績"< cout<<< for(int i=0;i<12;i++)
for( i=0;i<3;i++)
//建立串列首
list *head=new list;
if(!head)
//建立鏈結串列
ptr=createlist(head,data,namedata);
//執行成績刪除
delnode(head);
//列印剩餘串列資料
print(head);
return 0;
}//建立鏈結串列副程式
list * createlist(list * head, int data[2], char * namedata)
第四章小結
第4章非線性方程與非線性方程組的迭代解法 學習小結 一 本章學習體會 在之前的學習中我們基本接觸的都是線性方程和方程組的求解,對於非線性方程和非線性方程組的求解接觸很少。因為在實際應用中非線性方程能接觸解析表示式的很少,對於大多數非線性方程,只能用數值法求解出它的根的近似值。在本章介紹的求解非線性方...
第四章總結
實習總結 2011年02月21日是我踏入中國平安保險公司潮州中心支公司的第一天。我懷著乙份激動和好奇的心情來到中國平安保險財產股份 開始了大學以來的第二次實習實踐活動。現在回想起來,雖然只有短短的乙個半個月的實踐期,但在這段時間裡的的實習中我學到了很多在課堂上學不到的知識,讓我受益匪淺 並且接觸了很...
第四章作業
正確答案 借 長期股權投資 成本 2 010 貸 銀行存款2 010 2 20 7年4月1日,丙公司宣告分派20 6年度的現金股利100萬元。正確答案 借 應收股利20 貸 長期股權投資 成本 20 3 20 7年5月10 日,甲公司收到丙公司分派的20 6年度現金股利。正確答案 借 銀行存款20 ...