資料結構學習之路(一)C語言對陣列的簡單實現
以下的程式只是在觀看郝斌老師講解的(C語言資料結構)之後自己做得簡單練習。
# include <stdio.h> # include <stdlib.h> typedef struct MyArray{ int * pBase; //存放陣列第一個元素的地址 int len; //陣列長度 int cnt; //陣列的有效長度 }* PARR; void init(PARR, int); bool append(PARR, int); bool isEmpty(PARR); bool isFull(PARR); void showArray(PARR); bool insert(PARR, int, int); bool remove(PARR, int, int *); int main(void) { PARR pArr; init(pArr, 5); showArray(pArr); append(pArr, 1); append(pArr, 2); append(pArr, 3); append(pArr, 4); append(pArr, 5); showArray(pArr); insert(pArr,5,6); showArray(pArr); int x; remove(pArr,4,&x); showArray(pArr); printf("%d\n", x); insert(pArr,4,6); showArray(pArr); return 0; } /* 初始化陣列 */ void init(PARR pArr, int length) { pArr->pBase = (int *)malloc(sizeof(int)*length); if (pArr->pBase==NULL){ printf("%s\n", "記憶體分配失敗!"); exit(-1); }else{ pArr->len = length; pArr->cnt = 0; } } void showArray(PARR pArr){ if (isEmpty(pArr)) printf("%s\n", "陣列為空!"); else{ int i; for (i=0;i<pArr->cnt;i++) printf("%d ", pArr->pBase[i]); printf("\n"); } return; } bool isEmpty(PARR pArr){ if (pArr->cnt==0) return true; return false; } bool isFull(PARR pArr){ if (pArr->cnt==pArr->len) return true; return false; } bool append(PARR pArr, int val){ if (isFull(pArr)){ printf("%s\n", "陣列已滿!"); return false; }else{ pArr->pBase[pArr->cnt] = val; pArr->cnt++; return true; } } bool insert(PARR pArr, int index, int val){ if (isFull(pArr)){ printf("%s\n", "陣列已滿!"); return false; } if (index<0||index>pArr->cnt) { printf("%s\n", "陣列下標越界!"); return false; } int i; int temp; for (i=pArr->cnt; i>index; i--){ temp = pArr->pBase[i-1]; pArr->pBase[i-1] = pArr->pBase[i]; pArr->pBase[i] = temp; } pArr->pBase[index] = val; pArr->cnt++; return true; } bool remove(PARR pArr, int index, int * pVal){ if (isEmpty(pArr)){ printf("%s\n", "陣列已空!"); return false; } if (index<0||index>pArr->cnt-1){ printf("%s\n", "陣列下標越界!"); return false; } int i; int temp; *pVal=pArr->pBase[index]; for(i=index; i<pArr->cnt; i++){ temp = pArr->pBase[i]; pArr->pBase[i] = pArr->pBase[i+1]; pArr->pBase[i+1] = temp; } pArr->cnt--; return true; }
只是實現了陣列的一些簡單功能,如有不妥的地方,煩請聯絡我。
email: [email protected]
http://blog.csdn.net/zyy_2018/article/details/79722186
相關推薦
資料結構學習之路(一)C語言對陣列的簡單實現
以下的程式只是在觀看郝斌老師講解的(C語言資料結構)之後自己做得簡單練習。# include <stdio.h> # include <stdlib.h> typedef struct MyArray{ int * pBase; //存放陣列第一個
Tensorflow學習之路(一):從MNIST資料集開始
MNIST資料集簡單介紹: MNIST 資料集可在 http://yann.lecun.com/exdb/mnist/ 獲取, 它包含了四個部分: Training set images: train-images-idx3-ubyte.gz (9.9 MB,
資料視覺化神器matplotlib學習之路(一)
直接上程式碼吧,說明寫在備註就好了,這次主要學習一下基本的畫圖方法和常用的圖例圖示等 from matplotlib import pyplot as plt import numpy as np #這裡是最最基本的程式碼了 #x軸-2到2均分50個點 x = np.linspace(-2, 2,
一個菜鳥的資料結構學習之路(棧篇)
棧的基本操作如下: 相關結構體: typedef int status; typedef struct { SElemType *base; //在棧建立之前和銷燬之後,base的值為NULL SElemType *top; //棧
我的學習之路(一)SQL盲註學習篇
網絡安全 dvwa sql盲註 我的學習之路,現在零基礎,是一個小白,請各位大牛批評指正!寫下這篇,是對自己的一個思路的整理,僅供參考。 Dvwa中登錄進入,首先在DVWA Security中設置等級為low,然後進入SQL Injection(blind),隨意輸入一個數字進行抓包,然後找
初識vue.js,我的學習之路(一)
自動打開 下一步 鏡像 分享圖片 bpa demo 中間 前端技術 width 在以前做項目時經常是新建一些html、css、等一些文件,但在接觸了vue.js之後我發現我已經有點看不懂前端了,這對於我這麽一個菜鳥來說實在是很苦逼的事情。現在的前端技術都離不開
Hadoop學習之路(一)理論基礎和邏輯思維
file 工作 puts 範圍 小文件 集合 無效 任務 問題 三個題目 第一題 問題描述 統計出當前這個一行一個IP的文件中,到底哪個IP出現的次數最多 解決思路 //必須要能讀取這個內容 BufferedReader br = n
Python學習之路(一)
Python 基礎 Python基礎學習1(1)變量在Python中用來存儲數據所指向的內存地址叫做變量(2)變量的命名變量的命名由數字,字母,下劃線組成,數字不能開頭;不要使用Python中的關鍵字和函數名稱來命名變量;命名時要簡明,具有描述性;變量名區分大小寫。命名方式遵循駝峰命名法和下劃線命名法
Hive學習之路 (一)Hive初識
完成 優化 ble 缺點 ase 適合 table vol 利用 Hive 簡介 什麽是Hive 1、Hive 由 Facebook 實現並開源 2、是基於 Hadoop 的一個數據倉庫工具 3、可以將結構化的數據映射為一張數據庫表 4、並提供 HQL(Hive
Scala學習之路 (一)Spark初識
海量 處理 apache .org 流式 height 計算平臺 提高 結構化數據 一、官網介紹 官網地址:http://spark.apache.org/ Apache Spark™是用於大規模數據處理的統一分析引擎。 從右側最後一條新聞看,Spar
學習之路(一)淺談:基礎命令及linux工作原理
linux命令 看了視頻,它系統的講解了linux從硬件到操作系統的工作過程,以及常用的基礎命令的詳細參數及用法。 我也在這裏整理之後加強記憶一次基本概念,及linux文件樹目錄的基本知識結構。 硬件——>操作系統OS——>l
JAVA基礎學習之路(一)
個人理解 整形 之路 boolean mman 類型 布爾 屬性 註釋 JAVA基礎概念: PATHl: path屬於操作系統的屬性,是系統用來搜尋可執行文件的路徑,個人理解是類似於linux中的全局變量 CALSSPATH:java程序解釋類文件時加載文件的路徑 註釋
orcale存儲過程學習之路(一)
部分 bsp packages ORC har package var IE repl 1.在packages文件夾下新建一個“包”,當新建時會同時出現兩個供編輯的面板:一個為“聲明”的,一個為“body”部分的。 2.編寫兩個空方法: ------------------
webpack學習之路(一)
把學習webpack時的筆記貼上來以備不時之需,多摘自官方文件,閱讀文件的時候中英文一起看的,中文文件有時比較生澀會加入自己的理解。 安裝: 前提: 首先你要有個node環境(官方推薦LTS版本)。 本地安裝: npm install --save-d
Kubernetes學習之路(一)之Kubeadm部署K8S集群
chown you eof onf 訪問 perf 處的 iyu inter 一個星期會超過多少閱讀量呢??發布一篇,看看是否重新在51上寫學習博文,有老鐵支持嘛?? 使用kubeadm部署集群 節點名稱 ip地址 部署說明 Pod 網段 Service網段 系統說明
C語言的學習之路(一)——初識C語言
C語言的學習之路(一)——初識C語言 從9月8日踏入大學校園,已近過去40多天了。這篇部落格也是踏入大學的第一篇部落格。內心很慌:因為自己
Weex學習之路(一)
寫在前面:本文建立在讀者已安裝node.js環境,並掌握vue.js的基礎上。 1.搭建開發環境 1.1安裝依賴 全域性安裝weex-toolkit,類似於vue.js的vue-cli腳手架工具 npm install -g weex-toolkit 若提示沒有許可權,
Docker 學習之路(一)
Docker: 啟動docker:service docker start 搜尋映象:docker search centos 獲取映象:docker pull centos 檢視映象:docker images 刪除映象:docker rmi 啟動容器 dock
Linux 學習之路(一)
01|03 kernel space 記憶體碎片 GUI:圖形使用者介面 CLI:命令列使用者介面 核心功能: 程序管理 記憶體管理 檔案系統 網路功能 硬體驅動 安全機制 批處理系統 jobs1$$$$$$jobs2
Html學習之路(一)
基礎標籤 <!DOCTYPE> 定義文件型別。 <html>定義一個 HTML 文件 <title>為文件定義一個標題 <body>定義文件的主體 <h1> to <h6>定義 HTML 標題 <p> 定