实现基于静态数组的顺序表的以下基本操作:
4. 尾删
5 .头插
6. 头删
7. 在任意位置插入元素
1.打印
2. 初始化
3. 尾插4. 尾删
5 .头插
6. 头删
7. 在任意位置插入元素
8. 在任意位置删除元素
9.根据脚标查找相应的元素
10.修改任意位置元素
11.根据相应的值查找脚标
12.删除顺序表中所有相同元素的第一个元素
13.删除顺序表中所有相同元素
14.冒泡排序
15.查看顺序表中元素的个数
16.检查顺序表是否为空
17.选择排序
seqlist.h
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define maxsize 1000
typedef char seqtype;
typedef struct seqlist
{
seqtype arr[maxsize];
size_t size;
}seqlist;
void printseqlist(seqlist *seq);
void print_seqlist(char *s);
void seqlistInit(seqlist *seq);
void seqlistPushBack(seqlist *seq,seqtype value);
void seqlistPopBack(seqlist *seq);
void seqlistPushHead(seqlist *seq,seqtype value);
void seqlistPopHead(seqlist *seq);
void seqlistInsert_pos(seqlist *seq,size_t pos,seqtype data);
void seqlistErase_pos(seqlist *seq,size_t pos);
seqlist.c
#include <stdio.h>
#include <stdlib.h>
#include"seqlist.h"
void printseqlist(seqlist *seq)
{
size_t i=0;
if(seq->size == 0)
{
printf("seqlist is empty");
return;
}
for(i=0;i < seq->size;i++)
{
printf("%c ",seq->arr[i]);
}
printf("\n");
}
void seqlistInit(seqlist *seq)
{
if(NULL==seq)
{
return;
}
seq->arr[0]='x';
seq->arr[1]='x';
seq->arr[2]='x';
seq->size=3;
}
void seqlistPushBack(seqlist *seq,seqtype value)
{
if(seq == NULL)
return;
if(seq->size>=maxsize)
{
return;
}
seq->arr[seq->size]=value;
++(seq->size);
}
void seqlistPopBack(seqlist * seq)
{
if(seq == NULL)
return;
if(seq->size=0)
{
printf("neirongweikong,wufashanchu\n");
return;
}
seq->size--;
}
void seqlistPushHead(seqlist *seq,seqtype value)
{
if(seq ==NULL)
return;
if(seq->size>=maxsize)
{
printf("neirongyiman,wufacharu\n");
return;
}
int i=seq->size-1;
for(;i>=0;i--)
{
seq->arr[i+1]=seq->arr[i];
}
seq->arr[0]=value;
seq->size++;
}
void seqlistPopHead(seqlist *seq)
{
if(seq == NULL)
return;
if(seq->size == 0)
{
printf("neirongweikong,wufashanchu\n");
return;
}
size_t i=1;
for(;i<seq->size;i++)
{
seq->arr[i-1]=seq->arr[i];
}
seq->size--;
}
void seqlistInsert_pos(seqlist *seq,size_t pos, seqtype data)
{
if(seq == NULL)
return;
if(seq->size >= maxsize)
{
printf("neirongyiman,wufajixucharuneirong\n");
return;
}
else if(pos > seq->size)
{
printf("feifaweizhi,buxunxucharu\n");
return;
}
else
{
size_t m=seq->size;
for(m=seq->size;m>pos;m--)
{
seq->arr[m] = seq->arr[m-1];
}
seq->arr[pos] = data;
seq->size++;
}
}
void seqlistErase_pos(seqlist *seq,size_t pos)
{
if(seq == NULL)
{
printf("neirongweikong\n");
return;
}
else if(pos>seq->size)
{
printf("wufashanchu\n");
return;
}
else
{
size_t i;
for(i=pos;i<seq->size-1;i++)
{
seq->arr[i]=seq->arr[i+1];
}
seq->size--;
}
}
seqtype Get(seqlist *seq,size_t pos)
{
if(seq == NULL)
{
printf("neirongweikong\n");
return;
}
else if(pos>=seq->size)
{
printf("feifaweizhi\n");
return;
}
else
{
return seq->arr[pos-1];
}
}
void UpdateData(seqlist *seq,size_t pos,seqtype data)
{
if(seq == NULL)
{
printf("neirongweikong\n");
return;
}
else if(pos>=seq->size)
{
printf("feifaweizhi\n");
return;
}
else
{
seq->arr[pos-1]=data;
}
}
size_t Find(seqlist *seq,seqtype value)
{
if(seq == NULL)
{
printf("neirongweikong\n");
return -1;
}
size_t i = 0;
for(;i<seq->size;i++)
{
if(seq->arr[i-1] == value)
return i;
}
return -2;
}
void ReMove_1(seqlist *seq,seqtype value)
{
if(seq == NULL)
{
printf("neirongweikong\n");
return ;
}
int pos = Find(seq,value);
if(pos!=-1)
{
seqlistErase_pos(seq,pos);
}
}
void ReMove_2(seqlist *seq,seqtype value)
{
if(seq == NULL)
{
printf("neirongweikong\n");
return;
}
int pos = 0;
for(pos = 0;pos<seq->size;)
{
if(seq->arr[pos] == value)
{
seqlistErase_pos(seq,pos);
}
else
pos++;
}
}
void Swap(seqtype *a ,seqtype *b)
{
seqtype tmp = *a;
*a = *b;
*b = tmp;
}
void seqlistBubbleSort(seqlist *seq)
{
if(seq == NULL)
{
printf("neirongweikong\n");
return;
}
size_t count = 0;
for(;count<seq->size-1;++count)
{
size_t cur = 0;
for(;cur<seq->size-1-count;++cur)
{
if(seq->arr[cur]>seq->arr[cur+1])
{
Swap(&seq->arr[cur],&seq->arr[cur+1]);
}
}
}
size_t seqlistsize(seqlist *seq)
{
int i = 0;
int size = 0;
for(;i<seq->size;i++)
{
size++;
}
return size;
}
int seqlistEmpty(seqlist *seq)
{
if(seq == NULL)
{
printf("neirongweikong");
return;
}
if(seq->size == 0)
{
printf("shuxubiaoweikong\n");
return 1;
}
else
{
return -1;
}
}
void seqlistSelectSort(seqlist *seq)
{
if (seq == NULL)
{
printf("neirongweikong\n");
return;
}
int i = 0;
int j = 0;
for(;i<seq->size-1;i++)
{
for(j=i+1;j<seq->size;j++)
{
if(seq->arr[i]>seq->arr[j])
Swap(&seq->arr[i],&seq->arr[j]);
}
}
}
//test.c
void test_PushBack()
{
printf("*******weicha*******\n");
seqlist seq;
seqlistInit(&seq);
seqlistPushBack(&seq,'a');
seqlistPushBack(&seq,'b');
seqlistPushBack(&seq,'c');
printseqlist(&seq);
}
void test_PopBack()
{
printf("*******weishan*******\n");
seqlist seq;
seqlistInit(&seq);
printseqlist(&seq);
}
void test_PushHead()
{
printf("*******toucha*******\n");
seqlist seq;
seqlistInit(&seq);
seqlistPushHead(&seq,'a');
seqlistPushHead(&seq,'b');
seqlistPushHead(&seq,'c');
printseqlist(&seq);
}
void test_PopHead()
{
printf("*******toushan*******\n");
seqlist seq;
seqlistInit(&seq);
printseqlist(&seq);
}
void test_seqlistInsert_pos()
{
printf("*******renyiweizhicharu*******\n");
seqlist seq;
seqlistInit(&seq);
seqlistPushBack(&seq,'a');
seqlistPushBack(&seq,'b');
seqlistPushBack(&seq,'c');
printseqlist(&seq);
seqlistInsert_pos(&seq,2,'d');
printseqlist(&seq);
seqlistInsert_pos(&seq,1,'e');
printseqlist(&seq);
}
void test_seqlistErase_pos()
{
printf("*******renyiweizhishanchu*******\n");
seqlist seq;
seqlistInit(&seq);
seqlistPushBack(&seq,'a');
seqlistPushBack(&seq,'b');
seqlistPushBack(&seq,'c');
printseqlist(&seq);
seqlistErase_pos(&seq,2);
printseqlist(&seq);
seqlistErase_pos(&seq,3);
printseqlist(&seq);
}
void test_Get()
{
printf("*******chazhaorenyiweizhideyuansu*******\n");
seqlist seq;
seqlistInit(&seq);
seqlistPushBack(&seq,'a');
seqlistPushBack(&seq,'b');
seqlistPushBack(&seq,'c');
printseqlist(&seq);
seqtype data = Get(&seq,3);
printf("%c\n",data);
}
void test_UpdateData()
{
printf("*******xiugairenyiweizhiyuansu*******\n");
seqlist seq;
seqlistInit(&seq);
seqlistPushBack(&seq,'a');
seqlistPushBack(&seq,'b');
seqlistPushBack(&seq,'c');
printseqlist(&seq);
UpdateData(&seq,2,'m');
printseqlist(&seq);
}
void test_Find()
{
printf("*******chazhaorenyiyuansudexiabiao*******\n");
seqlist seq;
seqlistInit(&seq);
seqlistPushBack(&seq,'a');
seqlistPushBack(&seq,'b');
seqlistPushBack(&seq,'c');
printseqlist(&seq);
int i = Find(&seq,'a');
printf("%d\n",i);
}
void test_ReMove_1()
{
printf("*******shanchuxiangtongyuansudesiyige*******\n");
seqlist seq;
seqlistInit(&seq);
seqlistPushBack(&seq,'a');
seqlistPushBack(&seq,'b');
seqlistPushBack(&seq,'c');
printseqlist(&seq);
ReMove_1(&seq,'x');
printseqlist(&seq);
}
void test_ReMove_2()
{
printf("*******shanchusuoyouxiangtongyuan*******\n");
seqlist seq;
seqlistInit(&seq);
seqlistPushBack(&seq,'a');
seqlistPushBack(&seq,'b');
seqlistPushBack(&seq,'c');
printseqlist(&seq);
ReMove_2(&seq,'x');
printseqlist(&seq);
}
void test_seqlistBubbleSort()
{
printf("*******maopaopaixu*******\n");
seqlist seq;
seqlistInit(&seq);
seqlistPushBack(&seq,'a');
seqlistPushBack(&seq,'b');
seqlistPushBack(&seq,'c');
printseqlist(&seq);
seqlistBubbleSort(&seq);
printseqlist(&seq);
}
void test_seqlistsize()
{
printf("*******suohanyuansugeshu*******\n");
seqlist seq;
seqlistInit(&seq);
seqlistPushBack(&seq,'a');
seqlistPushBack(&seq,'b');
seqlistPushBack(&seq,'c');
printseqlist(&seq);
int i = seqlistsize(&seq);
printf("%d\n",i);
}
void test_seqlistEmpty()
{
printf("*******panduanshunxubiaoshifouweikong*******\n");
seqlist seq;
seqlistInit(&seq);
seqlistPushBack(&seq,'a');
seqlistPushBack(&seq,'b');
seqlistPushBack(&seq,'c');
printseqlist(&seq);
int i = seqlistEmpty(&seq);
printf("%d\n",i);
}
void test_seqlistSelectSort()
{
printf("*******xuanzepaixu*******\n");
seqlist seq;
seqlistInit(&seq);
seqlistPushBack(&seq,'a');
seqlistPushBack(&seq,'b');
seqlistPushBack(&seq,'c');
printseqlist(&seq);
seqlistSelectSort(&seq);
printseqlist(&seq);
}
int main(void)
{
test_PushBack();
test_PopBack();
test_PushHead();
test_PopHead();
test_seqlistInsert_pos();
test_seqlistErase_pos();
test_Get();
test_UpdateData();
test_Find();
test_ReMove_1();
test_ReMove_2();
test_seqlistBubbleSort();
test_seqlistsize();
test_seqlistEmpty();
test_seqlistSelectSort();
return 0;
}
五、运行结果