原创 數據結構之線性表的順序存儲結構實現

數據結構之線性表的順序存儲結構實現1 定義2 數據結構及操作2.1 數據結構2.2 操作3 主要操作實現3.1 創建一個新鏈表3.2 銷燬3.3 插入操作3.4 獲取元素操作3.5 刪除操作3.6 測試3.7 線性表順序存儲的

原创 鏈表相關操作——鏈表的反轉和查找鏈表中間結點

1 鏈表的反轉 1.1 原地反轉 注意:這裏針對的是有頭結點的鏈表 思路:使用兩個指針p, q,指針p永遠指向原列表的第一個結點,指針q指向要反轉的下一個結點。 開始時的指針位置: 指針交換(1)(2)(3)是交換的先後順序。 第

原创 死鎖

死鎖1 死鎖概念2 發生死鎖的四個必要條件3 死鎖處理3.1 死鎖預防3.1.1 互斥3.1.2 破壞佔有並等待條件3.1.3 破壞資源不可被搶佔條件3.1.4 破壞循環等待條件3.2 死鎖恢復3.2.1 進程終止3.2.2 資源搶佔

原创 死鎖程序

死鎖程序1 鎖順序死鎖2 動態鎖順序死鎖 1 鎖順序死鎖 #include <iostream> #include<pthread> using namespace std; pthread_mutex_t left = PTHRE

原创 多線程

多線程基礎1 線程相關概念2 Linux多線程基本函數3 pthread_join和pthread_exit的區別4 例子 1 線程相關概念 線程是CPU使用的基本單元,它由線程ID,程序計數器,寄存器集合和棧組成、它與屬於同一進程

原创 拷貝控制操作

拷貝控制操作1 拷貝構造函數2 拷貝賦值函數3 析構函數 1 拷貝構造函數 如果一個構造函數的第一個參數是自身類類型的引用,且任何額外參數都有默認值,則此構造函數是拷貝構造函數。 class Test { public: Test

原创 智能指針

智能指針1 變量保存2 智能指針2.1 shared_ptr(1)shared_ptr的定義和使用:(2)shared_ptr的拷貝和賦值(3)shared_ptr和new結合使用(4)不要混合使用普通指針和智能指針(5) 不要使用g

原创 函數指針

函數指針1 定義2 初始化3 函數指針的使用3.1 普通調用3.2 函數指針做形參4 重載函數的指針5 返回指向函數的指針6 C++函數指針6.1 C++其他函數(指針)定義方式及使用6.1.1 typedef與decltype組合定