顺序表1

顺序表操作实现
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#pragma once


#define SeqlistArrMax 100


typedef char SeqlistType;
typedef struct Seqlist
{
SeqlistType SeqlistArr[SeqlistArrMax];
size_t size;
}Seqlist;


void SeqlistInit(Seqlist *seqlist);//初始化顺序表


void SeqlistPrint(Seqlist *seqlist, char *c);//打印顺序表


void SeqlistPushEnd(Seqlist *seqlist, SeqlistType value);//尾插


void SeqlistPopEnd(Seqlist *seqlist);//尾删


void SeqlistPushstart(Seqlist *seqlist, SeqlistType value);//头插


void Seqlistpopstart(Seqlist *seqlist);//头删


void SeqlistRead(Seqlist *seqlist, size_t pos);//读取元素信息


void SeqlistSet(Seqlist *seqlist, size_t pos,SeqlistType value);//修改元素信息


void Seqlistsetpos(Seqlist *seqlist,SeqlistType value);//查找元素下标


void SeqlistPushPos(Seqlist *seqlist, size_t pos,SeqlistType value);//任意下标插入元素


#include<stdio.h>
#include"sqlist.h"
#include<assert.h>


//初始化顺序表


void SeqlistInit(Seqlist *seqlist)
{
assert(seqlist);
seqlist->size = 0;
}




//打印顺序表
void SeqlistPrint(Seqlist *seqlist, char *ch)
{
assert(seqlist);
int i = 0;
printf("%s\n", ch);
for (i = 0;i<seqlist->size;i++)
{
printf("下标为%d的元素为%c\n",i, seqlist->SeqlistArr[i]);
}
printf("size=%d\n", seqlist->size);
}


//尾插
void SeqlistPushEnd(Seqlist *seqlist,SeqlistType value)
{
assert(seqlist);
if (seqlist->size >= SeqlistArrMax)
{
printf("顺序表已满!\n");
}
seqlist->SeqlistArr[seqlist->size] = value;
seqlist->size++;


}


//尾删
void SeqlistPopEnd(Seqlist *seqlist)
{
assert(seqlist);
if ("seqlist->size==0")
{
printf("顺序表为空!\n");
return;
}
seqlist->size--;
}


//头插
void SeqlistPushStart(Seqlist *seqlist, SeqlistType *value)
{
assert(seqlist);
if (seqlist->size >= SeqlistArrMax)
{
printf("顺序表已满!\n");
return;
}
int i = seqlist->size;
for (; i > 0; i--)
{
seqlist->SeqlistArr[i + 1] = seqlist->SeqlistArr[i];


}
seqlist->SeqlistArr[0] = value;
seqlist->size++;
}


//头删
void SeqlistPopStart(Seqlist *seqlist)
{
assert(seqlist);
if (seqlist->size == 0)
{
printf("空顺序表!\n");
return;
}
int i = 0;
for (; i < seqlist->size; i++)
{
seqlist->SeqlistArr[i] = seqlist->SeqlistArr[i + 1];
}
seqlist->size--;
}


//读取信息
void SeqlistRead(Seqlist *seqlist, size_t pos)
{
assert(seqlist);
if (pos >= seqlist->size)
{
printf("输入有误!\n");
return;
}
printf("该元素为:%c\n", seqlist->SeqlistArr[pos]);


}


//修改信息
void SeqlistSet(Seqlist *seqlist,size_t pos, SeqlistType value)
{
assert(seqlist);
if (pos >= seqlist->size)
{
printf("输入有误!\n");
return;
}
seqlist->SeqlistArr[pos] = value;
}


//查找下标
void SeqlistSetPos(Seqlist *seqlist, SeqlistType value)
{
assert(seqlist);
int i = 0;
for (; i < seqlist->size;i++)
{
if (seqlist->SeqlistArr[i] = value)
{
printf("元素下标为:%d\n", i);
}


}
printf("没有该元素!\n");
}


//任意位置插入元素
void SeqlistPushPos(Seqlist *seqlist, size_t pos, SeqlistType value)
{
assert(seqlist);
if (pos >= seqlist->size)
{
printf("输入有误!\n");
return;
}
if (seqlist->size >= SeqlistArrMax)
{
printf("顺序表已满!\n");
return;
}
int i = seqlist->size;
for (; i > pos;i--)
{
seqlist->SeqlistArr[i] = seqlist->SeqlistArr[i - 1];
}
seqlist->SeqlistArr[pos] = value;
seqlist->size++;
}












//test code
void TestSeqlistInit()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPrint(&seqlist, "\n***************Init***************");


}


void TestSeqlistPushEnd()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushEnd(&seqlist, 'a');
SeqlistPushEnd(&seqlist, 'b');
SeqlistPushEnd(&seqlist, 'c');
SeqlistPrint(&seqlist, "**************PushEnd**************");
}


void TestSeqlistPopEnd()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushEnd(&seqlist, 'a');
SeqlistPushEnd(&seqlist, 'b');
SeqlistPushEnd(&seqlist, 'c');
SeqlistPrint(&seqlist, "**************PopEnd*************");
}
void TestSeqlistPushStart()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushEnd(&seqlist, 'c');
SeqlistPushEnd(&seqlist, 'd');
SeqlistPushEnd(&seqlist, 'e');
SeqlistPushStart(&seqlist, 'a');
SeqlistPushStart(&seqlist, 'b');
SeqlistPrint(&seqlist, "\n**********PushStart************");


}


void TestSeqlistPopStart()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushEnd(&seqlist, 'a');
SeqlistPushEnd(&seqlist, 'b');
SeqlistPushEnd(&seqlist, 'c');
SeqlistPopStart(&seqlist, 'a');
SeqlistPopStart(&seqlist, 'b');
SeqlistPrint(&seqlist, "\n********PopStart************");
}
void TestSeqlistRead()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushEnd(&seqlist, 'a');
SeqlistPushEnd(&seqlist, 'b');
SeqlistPushEnd(&seqlist, 'c');
SeqlistRead(&seqlist, 2);
SeqlistPrint(&seqlist, "\n********Read************");
}
void TestSeqlistSet()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushEnd(&seqlist, 'a');
SeqlistPushEnd(&seqlist, 'b');
SeqlistPushEnd(&seqlist, 'c');
SeqlistSet(&seqlist, 2,'e');
SeqlistPrint(&seqlist, "\n********Set************");
}
void TestSeqlistSetPos()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushEnd(&seqlist, 'a');
SeqlistPushEnd(&seqlist, 'b');
SeqlistPushEnd(&seqlist, 'c');
SeqlistSetPos(&seqlist, 'b');
SeqlistPrint(&seqlist, "\n********SetPos************");
}
void TestSeqlistPushPos()
{
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushEnd(&seqlist, 'a');
SeqlistPushEnd(&seqlist, 'b');
SeqlistPushEnd(&seqlist, 'c');
SeqlistRead(&seqlist, 2,'d');
SeqlistPrint(&seqlist, "\n********PushPos************");
}
int main()
{
TestSeqlistInit();
TestSeqlistPushEnd();
TestSeqlistPopEnd();
TestSeqlistPushStart();
TestSeqlistPopStart();
TestSeqlistRead();
TestSeqlistSet();
TestSeqlistSetPos();
TestSeqlistPushPos();
return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值