資料結構與演算法 定義的理解

2022-07-03 13:12:11 字數 880 閱讀 6987

資料結構的定義: 我們怎麼把現實中大量而複雜的問題,進行抽象建模(model),以特定的資料型別和特定的儲存結構把它們儲存到計算機中,從而可以實現某些操作,比如查詢和排序,實現這些操作的步驟就稱之為演算法,演算法就是對特定的資料型別進行某些操作的過程,從而達到某種目的。

比如我們要對整個班級內的所有學生成績進行排序,這是乙個很現實的問題,怎樣才能用計算機進行實現。首先我們要進行抽象建模,要記錄每乙個學生的姓名和成績,那就要用物件,這個物件定義兩個屬性name, score, 然後是所有的學生,我們可以用陣列進行儲存,把所有的物件都放到乙個陣列中。儲存完成後,我們就要進行排序,如何對陣列的物件進行排序的問題,這就是演算法的實現問題。但是如果學生的資料量特別大的話,如高考中,山東和河南的考生數量,那用陣列進行儲存可能就會有問題,因為陣列是一片連續的記憶體空間, 有可能記憶體空間不足,那就無法進行儲存了,這時可以考慮使用鍊錶,因為鍊錶中的元素是用指標進行鏈結的,只要有空間進行分配就可以了,空間不需要連續,可以分散在記憶體中的各個角落。

還有乙個現實中問題,就是我們經常使用的地圖,它是怎麼知道這兩個點之間距離是最短的,它是怎麼規劃路線的? 首先要進行抽象,現實中的地點比如公交站點,它是怎麼存放到地圖中的?用什麼樣的資料結構儲存到計算機中?單個點怎麼儲存,所有的點又怎麼儲存? 這就要用到資料結構中的圖了。然後計算兩個點之間的距離了,這又是具體的演算法了。

從上面的例子,可以看出,資料結構主要研究的是資料儲存,現實中大量而複雜的資料,怎麼存放到計算機中,單個資料怎麼儲存?所有的單個資料又怎麼整合到一起? 在資料儲存的過程中,有可能有多種實現方式,我們還要決定使有哪一種資料結構,使儲存更為有效。

資料儲存完成後,還要進行操作,如果只把資料儲存起來,不進行操作,那也沒有什麼作用,因為根本得不到任何有效資訊。對資料的操作就是演算法,我們怎麼才能從所有的資料中找出它的最小值,計算出它的平均數等等。

資料結構與演算法 棧 定義與操作

include include 棧 複習 adt stack is operations 1.stack createemptystack void 建立空棧 2.int isemptystack void 判斷是否為空棧 3.void push stack st,datatype x 向棧st的棧...

資料結構與演算法 佇列 定義與操作

佇列複習 adt queue is operations queue createemptyqueue void 建立乙個空佇列 int isemptyqueue queue qu 判斷佇列qu是否為空 void enqueue queue qu,datatype x x進入隊尾 void dequ...

資料結構與演算法 演算法 演算法和資料結構

資料結構與演算法 演算法 好吧,在這裡,您被優秀或優秀的軟體開發人員所隔開。在這種情況下,我會告訴您一開始或至少在我的情況下,並且我知道大多數時候,對於我認識的大多數人,您會覺得自己是乙個無能的人或白痴。基本上,我怎麼可能不理解這一點,然後您會感到沮喪。在這種情況下,我會告訴您情況並不像您想的那麼糟...