資料結構線性表演算法總結及測試
#define maxsize 100
//順序表查詢:findelem(sqlist l,int e)
//順序表插入:insertelem(sqlist &l,int p,int e)
//順序表刪除元素:deleteelem(sqlist &l,int p,int &e)
//順序表初始化:initlist(sqlist &l)
//順序表取元素:getelem(sqlist l,int p,int &e)
//尾插法建立單鏈表:createlistr(lnode *&c,int a,int n)
//頭插法建立單鏈表:createlistf(lnode *&c,int a,int n)
//查詢單鏈表元素並刪除:findanddelete(lnode *c,int x)
//將兩個單鏈表合併成乙個遞增單鏈表:mergeup(lnode *a,lnode *b,lnode *&c)
//將兩個單鏈表合併成乙個遞減單鏈表:mergedown(lnode *a,lnode *b,lnode *&c)
//尾插法建立雙鏈表:createdlistr(dlnode *&l,int a,int n)
//查詢雙鏈表節點:findnode(dlnode *c,int x)
//元素逆置:reverse(int a,int left,int right,int k)
//順序表定義
typedef struct
sqlist;
//單鏈表定義
typedef struct lnode
lnode;
//雙鏈表定義
typedef struct dlnode
dlnode;
//順序表查詢
int findelem(sqlist l,int e)
int deleteelem(sqlist &l,int p,int &e)
void createlistr(lnode *&c,int a,int n)
r->next = null;
}void createlistf(lnode *&c,int a,int n)
}void mergeup(lnode *a,lnode *b,lnode *&c)
else
}r->next = null;
if(p!=null)
r->next = p;
if(q!=null)
r->next = q;
}void mergedown(lnode *a,lnode *b,lnode *&c)
else
}while(p!=null)
while(q!=null) }
int findanddelete(lnode *c,int x)
if(p->next ==null)
return 0;
else }
void createdlistr(dlnode *&l,int a,int n)
r->next = null;
}dlnode* findnode(dlnode *c,int x)
p = p->next;
} return p;}
void reverse(int a,int left,int right,int k)
} int temp,e,get;
std::cout << "輸入你想取出第幾個元素" << std::endl;
std::cin >> temp ;
get = temp-1;
getelem(l,get,e);
std::cout << "已成功取出" << e << std::endl;
}
宣告:以上內容僅用來交流學習 資料結構 演算法及線性表總結
1.演算法是對特定的問題求解步驟的一種描述。演算法描述有自然語言 流程圖 偽 重點掌握 2.通過時間複雜度和空間複雜度來評定乙個演算法的優劣。3.特性 有窮性 確定性 可行性 輸入 輸出。1.線性表分為順序表和煉表。2.順序儲存結構的特點在邏輯上相鄰 物理位置相鄰 可實現隨機儲存 快速訪問 3.鏈式...
資料結構 演算法及線性表總結
2.空間複雜度分析 與臨時變數所佔空間有關。3.遞迴演算法時間與空間複雜度 都應該寫出遞推式,通過求解遞推式來獲得時間複雜度和空間複雜度。1.順序表 有隨機訪問特性,但其演算法時間主要花費在刪除和插入元素時元素移動上。2.鍊錶 不需要移動元素,沒有隨機訪問特性,演算法時間主要花費在遍歷元素上。1.一...
資料結構 演算法及線性表的總結
1.線性結構是乙個資料元素的有序關係,掌握線性表的基本運算。2.線性表的順序儲存是使用一塊位址連續的儲存空間,按照線性表中元素的邏輯順序依次存放相應元素。3.線性表的鏈式結構是將線性表中的資料元素存放在一組位址任意的儲存節點,節點之間使用 鏈 進行連線。4.鏈式結構中節點 資料元素 指標。資料元素 ...