順序儲存結構線性表的各種演算法(不定時補充)
儲存結構
如下。
//儲存結構
#define MAXSIZE 100
typedef struct {
int elem[MAXSIZE];
int last; //末尾元素下標
} SeqList;
一、刪除操作
雖說順序儲存結構不適合刪除操作,但是有時候為了追求時間複雜度和空間複雜度最優,還是頗有難度。
1 刪除值為elem的所有元素
首先想到的就是用elem的值從下標為0的元素開始比較,如果相同就把後面的元素依次前移,這樣的話時間複雜度為O(n2),其實還可以進一步優化為時間複雜度為O(n),程式碼如下。
void delAllElem(SeqList * L, int e) {
int j = 0;
for(int i=0;i<=L->last;i++) {
if(L->elem[i]==e) {
j++;
} else {
L->elem[i-j] = L->elem[i];
}
}
L->last = L->last-j;
}
相關推薦
順序儲存結構線性表的各種演算法(不定時補充)
儲存結構 如下。 //儲存結構 #define MAXSIZE 100 typedef struct { int elem[MAXSIZE]; int last; //末尾元素下標 } SeqLi
資料結構之順序儲存結構線性表
順序儲存結構:元素按順序連續儲存。 一般它的定義儲存格式為: //定義資料格式 typedef struct { ElemType data[MAXSIZE]; //陣列儲存元素 int length; //線性表的長度 }Sq
Docker常用指令及使用場景(不定時補充)
首先要獲取一個映象,比如ubuntu docker pull ubuntu 此刻預設到Docker Hub中下載映象; 如果需要從第三方倉庫下載,比如Dockerpool sudo docker pull dl.dockerpool.com:5000/
程式設計實現順序儲存結構和鏈式儲存結構線性表的建立、查詢、插入、刪除等基本操作
#include <stdio.h> #include <stdlib.h> typedef struct LNode{ int data; //連結串列資料 struct LNode* next; //連結串列指標 }LNode,*L
資料結構----線性表的使用(c)
PS:在學習資料結構之前,我相信很多博友也都學習過一些語言,比如說java,c語言,c++,web等,我們之前用的一些方法大都是封裝好的,就java而言,裡面使用了大量的封裝好的方法,一些演算法也大都寫好了,java還有三個特性,封裝、繼承、多型。當然這裡不是講Java,這裡主要是說內部結構,大家都知道資料結
將順序儲存的線性表中所有零元素向表尾集中
(華為招聘試題):試用C或類C語言編寫一高效演算法,將一順序儲存的線性表(設元素均為整型量)中所有零元素向表尾集中,其他元素則順序向表頭方向集中。 若輸入:1 2 3 0 0 5 0 4 7 8 則輸出:1 2 3 5 4 7 8 0 0 0 void make(int*
資料結構十種排序演算法(動圖演示)
0,演算法概述 0.1演算法分類 十種常見排序演算法可以分為兩大類: 非線性時間比較類排序:通過比較來決定元素間的相對次序,由於其時間複雜度不能突破O(nlogn),因此稱為非線性時間比較類排序。 線性時間非比較類排序:不通過比較來決定元素間的相對次序,它可以突破基於比較排
順序儲存的前序遍歷(二叉樹)
1.題目: Problem Description 給你一個採用順序儲存結構的二叉樹,請你設計一個演算法求出它的前序遍歷。 Input 輸入資料有多組,每組的第一行為一個正數n,表示該二叉
試編寫一個函式,實現在順序儲存方式下字串的strcompare(S1,S2)運算
先介紹一下字串的順序儲存字串其實就是一種特殊的線性表,學過線性表後我們知道,線性表有順序儲存和鏈式儲存兩種儲存結構,那麼很容易想到字串也有兩種基本的儲存結構:順序串和鏈式串。其實也沒什麼好說的字串都知道,不就是0個或多個字元構成的有限序列嘛比如 T= “ABCD”順序表也剛
圖的儲存結構的實現及其應用(地圖建設問題)
一、 實驗環境 學寶虛擬機器,VC6.0 二、 實驗目的 城市合理安排地鐵的路線,利用無向圖最小生成樹的方法使地鐵到達各個區並且總的建設費用最小。 三、 實驗內容 1. 用C語言實現圖的鄰接矩陣儲存結構或鄰接表的儲存
快速學習Spring Data JPA -- 第五章JPA多表關聯關係(不建議參考)
xl_echo編輯整理,交流學習請加1280023003 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這才是真正的堪稱強大!! 關聯關係註解包括@JoinColumn、@OneToOne、@OneToMany、 @ManyToOne、@ManyToMany、@JoinTab
Angular中響應式表單 FormBuilder、FormControl 、FormGroup、FormArray、setControl、setValue用法總結(不定時更新)
以我的專案作為示例,總結一下Angular響應式表單的應用和常用的方法: 1.建立表單 form.ts程式碼 import { Component, OnInit } from "@angular/core"; import { FormArray, FormBuilder, FormC
排序演算法(不定時更新~)
插入排序: /** * 插入排序 * 初始時,拿第二個和第一個比較,如果第二個小於第一個,兩個交換 * 當進行到第N次時,前面的N-1個順序應該是正確的 * 拿第N個和前面的N-1個數比較,如果第M個小於N,M+1大於N,則把N插到M和M+1中間 *
一種小數轉分數的演算法(不限整除)C++
最近需要用到小數轉分數演算法,便研究了一下。 先看一下最終程式的效果: 說一下數學中有理小數轉分數的過程: 有理小數分為有限小數和無限迴圈小數 1. 有限小數: 有限小數直接去小數點再約分即可。 例:1.55=155100=3120 2
javascript基礎知識整理(不定時更新)
nsh firefox 可用 splice mage true size -1 對數 1.js中真與假的定義: 真:true,非零數字,非空字符串,非空對象 假:false,數字零,空字符串,空對象(null),undefined 2.使用for循環對json進
代碼綜合後的電路對比(不定時更新)
output pre n) sed log 會有 blank 不同 blog 這裏來記錄一下相似代碼之間的不同差異,比如同步復位與異步復位觸發器的對比,上升沿復位和下降沿復位的對比等等。這裏主要使用ISE的綜合引擎。直接附上代碼和綜合後電路圖,有些會有部分講解。
css編寫註意事項(不定時更新)
不定 避免 選擇符 lin css代碼 單行註釋 兼容 使用 需要 CSS的編寫是需要積累的,而一個好的css編寫習慣對我們將來的成長是非常有利的,我會把我平時看到的或者遇到的會不定時的更新到這裏,不時翻一下,但求有所進步。 如果各位看官也有看法和建議,評論下,我也會更新進
《網絡》:關於計算機網絡的必備常識【無序】(不定時更新)
cos 表示 進行 span 必備 計算 需要 設置 不能 1、交換機連接的一定是單個網絡;路由器連接的一定是多個網絡。 2、基於端口方式的劃分VLAN,同一個交換機上不同端口的網絡是不通的。 3、交換機上的trunk口不能直接與PC連接。 4、華為交換機上的端口默認全不通
MySQL常用查詢語句匯總(不定時更新.......)
spa temp targe use 日常 下劃線 mys blank er圖 在這篇文章中我會通過一些例子來介紹日常編程中常用的SQL語句 目錄: ## 1.數據庫的建立 ## 2.常用查詢 ## 1.數據庫
算法題解題思路及代碼(不定時更新)
希望 target 解答 時間 -s 一次 return 時間復雜度 2.3 畢業半年, 平時工作總是關註業務、架構,而卻越來越少關註性能, 也再也沒有做過任何涉及算法的工作了希望有時間把這些拉下的東西拾起來,畢竟不論是使用什麽語言,從事什麽行業,只要是程序員,算法才是真正