日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

不定长顺序表

發布時間:2024/9/27 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不定长顺序表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

頭文件

pragma once#define INIT_SIZE 10typedef struct DSeqList {int *elem;//指向保存數據的內存int length;//有效數據個數int listsize;//總格子數 }DSeqList;typedef DSeqList * PDSeqList;//初始化函數 void InitDSeqList(PDSeqList plist);//往plist的pos位置插入數據val bool Insert(PDSeqList plist,int pos,int val);//打印 void Show(PDSeqList plist);//判空 bool IsEmpty(PDSeqList plist);//bool IsFuLL; ////查找,找到了返回下標,沒有找到返回-1 int Search(PDSeqList plist,int key);//刪除 bool DeleteVal(PDSeqList plist,int key);//刪除位置值 //rtval:輸出參數,保存刪除成功的數據 bool DeletePos(PDSeqList plist,int pos,int *rtval);//獲取pos下標存儲的數據 bool GetVal(PDSeqList plist,int pos,int *rtval);//修改pos下標的數據 bool SetVal(PDSeqList plist,int pos,int newval);//獲取val的前趨值 bool GetPriVal(PDSeqList plist,int key,int *rtval);//獲取val的后繼值 bool GetNextVal(PDSeqList plist,int key,int *rtval);//長度,即有效數據個數 int GetLength(PDSeqList plist);//清除所有數據 void Clear(PDSeqList plist);//銷毀 void Destroy(PDSeqList plist);

cpp文件

#include"dseqlist.h" #include<stdio.h> #include<stdlib.h> #include<assert.h>//初始化函數 void InitDSeqList(PDSeqList plist) {assert(plist != NULL);if(plist == NULL){return ;}plist->elem = (int *) malloc (INIT_SIZE*sizeof(int));plist->length = 0;plist->listsize = INIT_SIZE; } static bool IsFull(PDSeqList plist) {return plist ->length == plist->listsize; }//總容量擴大到原來的2倍 static void Inc(PDSeqList plist) {//plist->elem = (int *) malloc (INIT_SIZE*2*sizeof(int));//errorplist->elem = (int *) realloc(plist->elem,2*plist->listsize*sizeof(int));plist->listsize *= 2; }//往plist的pos位置插入數據val bool Insert(PDSeqList plist,int pos,int val) {assert(plist != NULL);if(pos <0 || pos >plist->length)// !!!{return false;}if(IsFull(plist)){Inc(plist);}for(int i =plist->length-1; i>=pos;i--)//!!!{plist->elem[i+1] = plist->elem[i];}plist->elem[pos] = val;plist->length++;return true; }//打印 void Show(PDSeqList plist) {for(int i= 0;i<plist->length;i++){printf("%d ",plist->elem[i]);}printf("\n"); }//判空 bool IsEmpty(PDSeqList plist) {return plist->length == 0; }static bool IsFuLL(PDSeqList plist) {return plist->length == plist->listsize ; }//查找,找到了返回下標,沒有找到返回-1 int Search(PDSeqList plist,int key) {assert(plist != NULL );for(int i= 0;i<plist->length-1;i++){if(plist->elem[i] == key){return i;}}return -1; }//刪除 bool DeleteVal(PDSeqList plist,int key) {int i = Search(plist,key);if(i == -1){return false;}return DeletePos(plist,i,NULL); }//刪除位置值 //rtval:輸出參數,保存刪除成功的數據 bool DeletePos(PDSeqList plist,int pos,int *rtval) {assert(plist != NULL);if(pos < 0 || pos >=plist->length){return false;}if(rtval != NULL){*rtval = plist->elem[pos];}for(int i = pos;i<plist->length-1;i++){plist->elem[i] = plist->elem[i+1];}plist->length --; }//獲取pos下標存儲的數據 bool GetVal(PDSeqList plist,int pos,int *rtval) {assert(plist != NULL);if(pos < 0 || pos >=plist->length){return false;}if(rtval != NULL){*rtval = plist->elem[pos];}return true; }//修改pos下標的數據 bool SetVal(PDSeqList plist,int pos,int newval) {assert(plist != NULL);if(pos < 0 || pos >=plist->length){return false;}plist->elem[pos] = newval;return true; }//獲取val的前趨值 bool GetPriVal(PDSeqList plist,int key,int *rtval) {int i = Search(plist,key);if(i <= 0){return false;}if(rtval != NULL){*rtval = plist->elem[i-1];}return true; }//獲取val的后繼值 bool GetNextVal(PDSeqList plist,int key,int *rtval) {int i = Search(plist,key);if(i <0 || i>=plist->length-1){return false;}if(rtval != NULL){*rtval = plist->elem[i+1];}return true;}//長度,即有效數據個數 int GetLength(PDSeqList plist) {return plist->length; }//清除所有數據 void Clear(PDSeqList plist) {plist->length = 0; }//銷毀 void Destroy(PDSeqList plist) {free(plist->elem); }

主函數

#include<stdio.h> #include<stdlib.h> #include"dseqlist.h"int main() {DSeqList dseq;InitDSeqList(&dseq);for(int i= 0;i<40;i++){Insert(&dseq,i,i);}Show(&dseq);DeletePos(&dseq,5,NULL);Show(&dseq);Destroy(&dseq);Clear(&dseq);Show(&dseq);return 0; }

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的不定长顺序表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。