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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

静态顺序表

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

順序表是在計(jì)算機(jī)內(nèi)存中以數(shù)組的形式保存的線性表,是指用一組地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)數(shù)據(jù)元素的線性結(jié)構(gòu)。線性表采用順序存儲(chǔ)的方式存儲(chǔ)就稱之為順序表。順序表是將表中的結(jié)點(diǎn)依次存放在計(jì)算機(jī)內(nèi)存中一組地址連續(xù)的存儲(chǔ)單元中。

順序表分為靜態(tài)存儲(chǔ)的順序表和動(dòng)態(tài)存儲(chǔ)的順序表。

這里先說(shuō)明靜態(tài)順序表的基本操作的實(shí)現(xiàn):

//SeqList.h #ifndef?__SEQLIST_H__ #define?__SEQLIST_H__ #include<string.h> #include<assert.h> #define?MAX_SIZE?100 typedef?int?DataType; typedef?struct?SeqList {DataType?array[MAX_SIZE];size_t?size; }SeqList,*pSeqList;void?InitSeqList(pSeqList?pSeq); void?PrintSeqList(pSeqList?pSeq);void?PushBack(pSeqList?pSeq,?DataType?x); void?PopBack(pSeqList?pSeq); void?PushFront(pSeqList?pSeq,?DataType?x); void?PopFront(pSeqList?pSeq);void?Insert(pSeqList?pSeq,?int?pos,?DataType?x); void?Remove(pSeqList?pSeq,?DataType?x); void?RemoveAll(pSeqList?pSeq,?DataType?x);int?Find(pSeqList?pSeq,DataType?x); void?Erase(pSeqList?pSeq,DataType?pos); void?ReverseList(pSeqList?pSeq); void?SortList(pSeqList?pSeq); int??BinarySearch(pSeqList?Seq,?DataType?x);void?InitSeqList(pSeqList?pSeq) {memset(pSeq->array,0,sizeof(DataType)*MAX_SIZE);pSeq->size?=?0; }void?PushBack(pSeqList?pSeq,?DataType?x) {assert(pSeq);if(pSeq->size?>=?MAX_SIZE){printf("SeqList?is?Full");return;}pSeq->array[pSeq->size]?=?x;pSeq->size++; }void?PopBack(pSeqList?pSeq) {assert(pSeq);if(pSeq->size?<=?0){printf("SeqList?is?empty");return;}pSeq->array[pSeq->size-1]?=?NULL;pSeq->size--; }void?PushFront(pSeqList?pSeq,?DataType?x) {int?i?=?0;assert(pSeq);if(pSeq->size?>=?MAX_SIZE){printf("SeqList?is?Full");return;}for(i?=?pSeq->size-1;?i?>=?0;?i--){pSeq->array[i+1]?=?pSeq->array[i];}pSeq->array[0]?=?x;pSeq->size++; }void?PopFront(pSeqList?pSeq) {int?i?=?0;assert(pSeq);if(pSeq->size?<=?0){printf("SeqList?is?empty");return;}for(i?=?1;?i?<?pSeq->size;?i++){pSeq->array[i-1]?=?pSeq->array[i];}pSeq->size--; }void?PrintSeqList(pSeqList?pSeq) {int?i?=?0;assert(pSeq);for(i?=?0;?i?<?pSeq->size;i++){printf("%d?",pSeq->array[i]);} }void?Insert(pSeqList?pSeq,?int?pos,?DataType?x) {int?i?=?0;assert(pSeq);if(pSeq->size?>=?MAX_SIZE){printf("SeqList?is?Full");return;}for(i?=?pSeq->size-1;?i?>=?pos;?i--){pSeq->array[i+1]?=?pSeq->array[i];}pSeq->array[pos]?=?x;pSeq->size++; }int?Find(pSeqList?pSeq,DataType?x) {int?i?=?0;assert(pSeq);if(pSeq->size?<=?0){printf("SeqList?is?empty");return;}for(i?=?0;?i?<?pSeq->size;?i++){if(pSeq->array[i]?==?x){return?i;}}return?-1; }void?Erase(pSeqList?pSeq,DataType?pos) {int?i?=?0;assert(pSeq);if(pSeq->size?<=?0){printf("SeqList?is?empty");return;}for(i?=?pos+1;?i?<?pSeq->size;?i++){pSeq->array[i-1]?=?pSeq->array[i];}pSeq->size--; }void?Remove(pSeqList?pSeq,?DataType?x) {int?pos?=?Find(pSeq,x);assert(pSeq);if(pos?!=?-1){Erase(pSeq,pos);}else{printf("not?exist");} }void?RemoveAll(pSeqList?pSeq,?DataType?x) {int?count?=?0;int?i?=?0;assert(pSeq);if(pSeq->size?<=?0){printf("SeqList?is?empty");return;}for(i?=?0;?i?<?pSeq->size;?i++){if(pSeq->array[i]?==?x){count++;}else{pSeq->array[i-count]?=?pSeq->array[i];}}pSeq->size-=count; }void?ReverseList(pSeqList?pSeq) {int?left?=?0;int?right?=?pSeq->size-1;assert(pSeq);while(left?<?right){int?tmp?=?pSeq->array[left];pSeq->array[left]?=?pSeq->array[right];pSeq->array[right]?=?tmp;left++;right--;} }void?SortList(pSeqList?pSeq) {int?i?=?0,?j?=?0;assert(pSeq);for(i?=?0;?i?<?pSeq->size-1;?i++){for(j?=?0;?j?<?pSeq->size-i-1;?j++){if(pSeq->array[j]?>?pSeq->array[j+1]){int?tmp?=?pSeq->array[j];pSeq->array[j]?=?pSeq->array[j+1];pSeq->array[j+1]?=?tmp;}}} }int?BinarySearch(pSeqList?pSeq,?DataType?x) {int?left?=?0;int?right?=?pSeq->size-1;assert(pSeq);while(left?<=?right){int?mid?=?left?-?(left?-?right)/2;if(pSeq->array[mid]?>?x){right?=?mid-1;}else?if(pSeq->array[mid]?<?x){left?=?mid+1;}else{return?mid;}}return?-1; }#endif?//__SEQLIST_H__?//SeqList.c#include<stdio.h> #include"SeqList.h"void?Test1() {SeqList?seq;InitSeqList(&seq);PushBack(&seq,1);PushBack(&seq,2);PushBack(&seq,3);PushBack(&seq,4);PopBack(&seq);PrintSeqList(&seq); } void?Test2() {SeqList?seq;int?ret;InitSeqList(&seq);PushBack(&seq,1);PushBack(&seq,2);PushBack(&seq,3);PushBack(&seq,4);PushFront(&seq,0);PopFront(&seq);Insert(&seq,2,6);ret?=?Find(&seq,6);printf("%d\n",ret);PrintSeqList(&seq); } void?Test3() {SeqList?seq;InitSeqList(&seq);PushBack(&seq,1);PushBack(&seq,2);PushBack(&seq,3);PushBack(&seq,4);PushBack(&seq,4);PushBack(&seq,2);PushBack(&seq,5);PushBack(&seq,6);PopBack(&seq);Erase(&seq,2);Remove(&seq,2);RemoveAll(&seq,4);PrintSeqList(&seq); } void?Test4() {SeqList?seq;int?pos;InitSeqList(&seq);PushBack(&seq,1);PushBack(&seq,2);PushBack(&seq,3);PushBack(&seq,4);PushBack(&seq,4);PushBack(&seq,5);ReverseList(&seq);SortList(&seq);pos?=?BinarySearch(&seq,2);printf("%d\n",pos);PrintSeqList(&seq); }int?main() {//Test1();?//Test2();//Test3();Test4();return?0; }



總結(jié)

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

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