线性表之顺序存储结构相关算法学习
生活随笔
收集整理的這篇文章主要介紹了
线性表之顺序存储结构相关算法学习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作為一名準備干一輩子的程序員,學習算法還是很有必要的。所以從基礎開始了。學習教材 是大話數據結構。
線性表的順序存儲結構,指的是用一段地址連續的存儲單元依次存儲線性表的數據元素。代碼 參照教材 采用c語言編寫,稍作修改,加上一些個人理解。
學習算法本來就是一個積累的過程,不斷的去理解和模仿優秀的算法,然后再運用在實踐中。
#define MAXSIZE 20 #define OK 1 #define ERROR 0#include <stdio.h>//返回值狀態類型 typedef int Status; //線性表內部存儲的元素類型可以是其他類型 typedef int EleType; typedef struct MyList {EleType data[MAXSIZE];int length; } MyList; Status getEle(const MyList * const list, int position,EleType *e) {//獲取內容錯誤:空表,位置不在正確范圍內if (list->length == 0 || position < 0 || position >= list->length)return ERROR;*e = list->data[position];return OK; }//展示 線性表內容 void printList(MyList * list){printf("length:%d\n", list->length);int i = 0;printf("content:\t");for (i = 0; i < (list->length); i++){printf("%d\t", list->data[i]);}printf("\n"); }//往線性表插入元素 //position 為插入位置 //e 插入元素 Status insertEle(MyList *list,int position,EleType e) {//非法 情況判定:線性表不存在,線性表已滿 ,插入位置是非法位置(0~lengh才是合法位置,可以插在列表末尾 即length位置)if (list == NULL || list->length == MAXSIZE || position < 0 || position > list->length)return ERROR;//插入算法:將插入位置到線性表最后一個元素依次往后移動一個位置,然后將元素放到指定位置,線性表長度+1.int i = 0;//當 position = list-> length ,不會進入循環,直接在表尾進行添加for (i = list->length-1; i >= position; i--){list->data[i+1] =list->data[i];}list->data[position] = e;list->length++;return OK; }//指定線性位置 刪除元素 Status delEle(MyList *list, int position, EleType *e) {//非法 情況判定:線性表不存在,線性表為空 ,刪除位置是非法位置if (list == NULL || position < 0 || position > (list->length - 1))return ERROR;//通過指針返回刪除元素*e = list->data[position];//刪除算法:刪除元素通過指針返回,將刪除位置的后一個元素到線性表最后一個元素依次往往移動一個位置,線性表長度-1.int i = 0;for (i = position; i <= list->length-1; i++){list->data[i] = list->data[i+1];}list->length--;return OK; }int main(){MyList list={{1,29,7,8,10},8};int gEle;printf("獲取[4]元素\n");//獲取元素int status = getEle(&list, 4, &gEle);if (status != ERROR) {printf("position = %d ,getEle = %d \n", 4, gEle);}else {printf("getEle error\n");}printf("插入元素前:\n");printList(&list);//插入元素insertEle(&list, 4, 70);printf("插入[4] = 70 元素:\n");printList(&list);//刪除元素int dEle;delEle(&list, 3, &dEle);printf("刪除[3]元素:%d\n",dEle);printList(&list);printf("\n");system("pause");return 0; }驗證結果截圖:
總結
以上是生活随笔為你收集整理的线性表之顺序存储结构相关算法学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爬虫.之登陆及动态网页的抓取
- 下一篇: 05 Python字符串的通用操作