顺序表指定位置的查找删除修改以及冒泡排序

1        #include"SeqList.h"
  2     void SeqListInit(SeqList *seqlist)//顺序表的重置
  3       {
  4     if(seqlist==NULL){
  5     return;
  6     }
  7     seqlist->size=0;
  8       } 
  9        void SeqListPushBack(SeqList *seqlist,SeqListType value)//尾插元素
 10       {
 11     if(seqlist==NULL)
 12     {
 13     return ;
 14     }
 15     if(seqlist->size>=SeqListMaxSize)
 16     {
 17     return ;
 18     }
 19     seqlist->data[seqlist->size]=value;
 20     ++seqlist->size;
 21     return;
 22       }
 23        int SeqListGet(SeqList*seqlist,size_t pos,SeqListType* value)//获取指定位置的元素
 24       {
 25     if(seqlist==NULL)
 26     {
 27         return 0;
 28     }
 29     if(pos>=seqlist->size)
 30     {
 31         return 0;
 32     }
 33      *value=seqlist->data[pos];
 34         return 1;
 35        }
 36        int SeqListSet(SeqList*seqlist,size_t pos,SeqListType value)//修改指定位置的元素
 37       {
 38     if(seqlist==NULL)
 39     {
 40         return 0;
 41     }
 42     if(pos>=seqlist->size)
 43     {
 44         return 0;
 45     }
 46     seqlist->data[pos]=value;
 47         return 1;
 48        }
 49         size_t SeqListFind(SeqList* seqlist,SeqListType pos)//查找指定的元素
 50        {
 51     if(seqlist==NULL)
 52     {
 53         return 0;
 54     }
 55     size_t i=0;
 56     for(;i<seqlist->size;++i)
 57     {
 58         if(seqlist->data[i]==pos)
 59         {
 60             return i;
 61         }
 62     }
 63     return (size_t)-1;
 64     }
 65        void  SeqListErase(SeqList*seqlist,size_t pos)//删除指定位置的元素
 66     {
 67         if(seqlist==NULL)
 68         {
 69             return;
 70         }
 71         if(pos>=seqlist->size)
 72         {
 73             return; 
 74         }
 75         size_t i=pos;
 76         for(;i<seqlist->size-1;++i)
 77         {
 78             seqlist->data[i]=seqlist->data[i+1];
 79         }
 80         --seqlist->size;
 81     }
 82       void SeqListRemove(SeqList* seqlist,SeqListType to_remove)//删除指定的元素,与上面有所区别,这里没有指出位置,需要用find查找元素位置
 83         {
 84         if(seqlist==NULL)
 85         {
 86             return; 
 87         }
 88         size_t pos=SeqListFind(seqlist,to_remove);
 89         if(pos==(size_t)-1)
 90         {
 91             return;
 92         }
 93         SeqListErase(seqlist,pos);
 94     }
 95       void  SeqListAllRemove(SeqList* seqlist,SeqListType to_remove)//删除所有的指定元素
 96     {
 97         if(seqlist==NULL)
 98         {
 99             return;
100         }
101         size_t i=0;
102         while(i<seqlist->size)
103         {
104             SeqListRemove(seqlist,to_remove);
105             ++i;
106         }
107     }
108       void  SeqListBubbleSort(SeqList*seqlist)  //冒泡排序
109 {
110        if(seqlist==NULL)
111        {
112            return;
113        }
114        size_t count=0;
115        size_t cur=0;
116       for(count=0;count<seqlist->size;++count) 
117       {
118           for(cur=0;cur<seqlist->size-1-count;++cur)
119           {
120               size_t tmp=0;
121               if(seqlist->data[cur]>seqlist->data[cur+1])
122               {
123                   tmp=seqlist->data[cur];
124                   seqlist->data[cur]=seqlist->data[cur+1];
125                   seqlist->data[cur+1]=tmp;
126               }  
127           } 
128       } 
130 ///
131 ///以下为测试代码///
132       #include<stdio.h>
133       SeqlistPrintchar(SeqList *seqlist,const char* msg)
134         {
135            if(seqlist==NULL)
136           {
137           return ;
138           }
139           printf("[%s] \n",msg);
140           size_t i=0;
141           for(;i<seqlist->size;++i)
142           {
143           printf("[%c]  ",seqlist->data[i]);
144           }
145         }
146 
147        TextGet()
148     {
149       SeqList seqlist;
150       SeqListInit(&seqlist);
151       SeqListPushBack(&seqlist,'a');
152       SeqListPushBack(&seqlist,'b');
153       SeqListPushBack(&seqlist,'c');
154       SeqListType value;
155       int ret= SeqListGet(&seqlist,2,&value);
156       printf(" pos expected 'c',actual %c\n",value);
157       printf(" ret   expected '1',actual %d\n",ret);    
158     }
159        TextSet()
160     {
161       SeqList seqlist;
162       SeqListInit(&seqlist);
163       SeqListPushBack(&seqlist,'a');
164       SeqListPushBack(&seqlist,'b');
165       SeqListPushBack(&seqlist,'c');
166       SeqListSet(&seqlist,2,'x');
167       SeqListType value;
154       SeqListType value;
155       int ret= SeqListGet(&seqlist,2,&value);
156       printf(" pos expected 'c',actual %c\n",value);
157       printf(" ret   expected '1',actual %d\n",ret);
158     }
159        TextSet()
160     {
161       SeqList seqlist;
162       SeqListInit(&seqlist);
163       SeqListPushBack(&seqlist,'a');
164       SeqListPushBack(&seqlist,'b');
165       SeqListPushBack(&seqlist,'c');
166       SeqListSet(&seqlist,2,'x');
167       SeqListType value;
168       int ret=SeqListGet(&seqlist,2,&value);
169       printf(" value expected 'x',actual %c\n",value);
170       printf(" ret   expected '1',actual %d\n",ret);    
171     }
172        TextFind()
173     {
174       SeqList seqlist;
175       SeqListInit(&seqlist);
176       SeqListPushBack(&seqlist,'a');
177       SeqListPushBack(&seqlist,'b');
178       SeqListPushBack(&seqlist,'c');
179       size_t ret=SeqListFind(&seqlist,'b');
180       printf(" ret expected '1',actual %d\n",(int)ret);
181     }
182     TextRemove()
183     {
184       SeqList seqlist;
185       SeqListInit(&seqlist);
186       SeqListPushBack(&seqlist,'a');
187       SeqListPushBack(&seqlist,'b');
188       SeqListPushBack(&seqlist,'c');
189       SeqListRemove(&seqlist,'a');
190       SeqlistPrintchar(&seqlist,"以下是删除指定元素的结果");
191     }
192      
193     TextAllRemove()
194     {
195       SeqList seqlist;
196       SeqListInit(&seqlist);
197       SeqListPushBack(&seqlist,'a');
198       SeqListPushBack(&seqlist,'b');
199       SeqListPushBack(&seqlist,'c');
200       SeqListPushBack(&seqlist,'a');
201       SeqListAllRemove(&seqlist,'a');
202       SeqlistPrintchar(&seqlist,"以下是删除所有相同元素的结果");
203     }
204     TextBubbleSort()
205 {
206     
207       SeqList seqlist;
208       SeqListInit(&seqlist);
209       SeqListPushBack(&seqlist,'b');
210       SeqListPushBack(&seqlist,'a');
211       SeqListPushBack(&seqlist,'c');
212       SeqListPushBack(&seqlist,'d');
213       SeqListBubbleSort(&seqlist);
214       SeqlistPrintchar(&seqlist,"冒泡升序的结果;"); 
215 }
216     int main()
217     {
218      TextGet();
219      printf("\n");
220      TextSet();
221      printf("\n");
222      TextFind();
223      printf("\n");
224      TextRemove();
225      printf("\n");
226      TextAllRemove();
227      printf("\n");
228      TextBubbleSort();
229      return 0;  
230     }
 2     #pragma once//给出所需要的头文件,因为与上一篇文章所写都为顺序表,所以引用了上一篇的头文件加以增添所需
  3     #include<stddef.h>
  4     #define SeqListMaxSize 100
  5     typedef  char SeqListType;
  6     typedef struct SeqList
  7     {
  8     SeqListType data[SeqListMaxSize];
  9     size_t size;
 10     }SeqList;
 11     void SeqListInit(SeqList *seqlist);
 12     void SeqListPushBack(SeqList* seqlist,SeqListType value);
 13     void SeqListPopback(SeqList* seqlist);
 14     void SeqListPushFront(SeqList* seqlist,SeqListType value);
 15     void SeqListPopFront(SeqList* seqlist);
 16     void SeqListInsert(SeqList*seqlist,size_t pos,SeqListType value);
 17     void SeqListErase(SeqList*seqlist,size_t pos);
 18     size_t  SeqListFind(SeqList*seqlist,SeqListType find);
 19     void SeqListRemove(SeqList*seqlist,SeqListType to_remove);
 20     void SeqListAllRemove(SeqList*seqlist,SeqListType to_remove);
 21     void SeqListBubbleSort(SeqList*seqlist);                        


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值