本來想寫在紙上的,不過估計不怎看,還是寫在云上,哪天無聊時看看,
**溫故而知新,可以為師矣,**這些都是之前沒有太過在意的地方,細細推敲之后能發現許多有趣的東西
1.隨機訪問,順序訪問

2.malloc 和 new
void * p1;
int *p2;
p1 = p2; //p1變成了一個int型的指標了,void型指標可以自動轉化為其他型別的指標,前提都是指標
詳細的malloc放到之后的文章說,
3.資料元素和資料項和資料結構 資料型別
這里寫的少一些,以后慢慢增加,例如某個順序表的,資料項組成資料元素,
#define ElemType int;
常在開始定義ElemType型別,或者自定義型別,為了以后的操作方便

4.有關演算法的健壯性
由于編程語言選用的不同,try catch 結構可能不同,
不過,對于演算法仍然保存最基礎的糾錯功能,即通過簡單的判斷,對一些非法資料做出判斷
例子1,出堆疊,堆疊空,則結束
int Stack_Push(SqStack &S,char e)
{
if (S.top-S.base==S.stacksize)//連續記憶體地址,
return ERROR;/* code */
*S.top=e;S.top++;//優先級,*S.top=e;之后S.top++;
return OK;
}
例子2,向順序表插入一個元素,
當
1.表空時
2.插入的位置非法時
3.表已滿時
為以上三種情況時,都不能插入,你必須對以上的基本情況進行考慮,進而完成最基礎的糾錯,演算法要有健壯性,對輸入的資料檢查后分流處理
bool ListInsert_Sqlist(Sqlist &L,int i,ElemType e)
{
if (i<1 || i>L.length+)
return false;
if ((L.length>=Maxsize))
{
return false;
}
//code
}
5.順序表&的緊湊形式
我們說的順序表鏈表一般不是空的,當它空的時候就要洗掉它,同時改變length的長度,所以,不要留空,

6.C/C++如何回傳多個值?
這里,C\C++不能回傳多個值,只能 return a value or function ,那怎么可以回傳多個值呢?最常規的辦法,就是用指標和參考操作,簡單的說,通過對地址的操作
python函式可以回傳不定長的資料
7.鏈表的頭結點有啥用?能不能不要?
作用:
①頭結點的資料域可以不存盤任何資訊,也可以存取length資訊
②防止單鏈表是空的而設的.當鏈表為空的時候,帶頭結點的頭指標就指向頭結點.如果當鏈表為空的時候,單鏈表沒有帶頭結點,那么它的頭指標就為NULL.
③保證演算法設計的統一性,減少分支,減少對特殊情況的考慮,為了方便單鏈表的特殊操作,插入在表頭或者洗掉第一個結點.這樣就保持了單鏈表操作的統一性! 單鏈表加上頭結點之后,無論單鏈表是否為空,頭指標始終指向頭結點,因此空表和非空表的處理也統一了,方便了單鏈表的操作,也減少了程式的復雜性和出現bug的機會,
④ 操作方便,鏈表有頭指標,當我們需要使用鏈表中的資料時,我們可以使用遍歷查找等方法,從頭指標指向的結點開始,依次搜索,直到找到需要的資料;反之,若沒有頭指標,則鏈表中的資料根本無法使用,也就失去了存盤資料的意義,
當然頭結點會占用額外開銷,但與他的好處相比,并沒有什么,
8.單鏈表
需要注意以下幾點:
1. 雙鏈表的尾結點的next值為null
2. 回圈鏈表的rear(next)指向頭結點,即是L
3. 其他的沒有什么,看看題目說的是什么條件
9.靜態鏈表
靜態鏈表,用一個順序表來表示鏈表,后面還會遇到順序存盤的二叉樹,暫時想不到有什么用?
缺點:
1.順序結構占用大量連續空間,比一般的順序表占用空間還多
2.會出現部分空間浪費的形式,不是緊湊形式

看起來很像哈夫曼樹創建的程序,
優點是:
并非所有的語言都支持指標,因此這也能提供一個不錯的思路
*10. 鏈表中的 Lnode p和p到底是啥
11,今天開始學習linux
~2021.5.3 軟體工程專業,豈能不會Linux,~~~
| 名稱 | 說明 |
|---|---|
| unix | unix商業化的,unix系統大多是與硬體配套的,另外,windows和linux·都參考了unix |
| ,multi uni | |
| – | – |
| Linux | linux免費的,開源的,可運行在多種硬體上 |
| – | – |
| GNU(讀音與new相似) | gnu計劃,為linux提供軟體資源 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/282876.html
標籤:其他
