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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

不定长顺序表

發(fā)布時(shí)間:2024/9/27 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不定长顺序表 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

頭文件

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

cpp文件

#include"dseqlist.h" #include<stdio.h> #include<stdlib.h> #include<assert.h>//初始化函數(shù) 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; }//總?cè)萘繑U(kuò)大到原來的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位置插入數(shù)據(jù)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 ; }//查找,找到了返回下標(biāo),沒有找到返回-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:輸出參數(shù),保存刪除成功的數(shù)據(jù) 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下標(biāo)存儲的數(shù)據(jù) 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下標(biāo)的數(shù)據(jù) 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;}//長度,即有效數(shù)據(jù)個(gè)數(shù) int GetLength(PDSeqList plist) {return plist->length; }//清除所有數(shù)據(jù) void Clear(PDSeqList plist) {plist->length = 0; }//銷毀 void Destroy(PDSeqList plist) {free(plist->elem); }

主函數(shù)

#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; }

?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。