sxb.h
/*===============================================
* 文件名称:sxb.h
* 创 建 者: crx
* 创建日期:2023年08月22日
* 描 述:
================================================*/
#ifndef _SXB_H
#define _SXB_H
#include <stdio.h>
#include <stdlib.h>
typedef struct Sequence_list{
int *arr;
int len;
int tail;
}Seq,*Pseq;
void seqlist_init(Pseq *p,int len);
Pseq seqlist_create(int len);
int empty_list(Pseq p);
int full_list(Pseq p);
int length(Pseq p);
void show(Pseq p);
int insert_data(Pseq p,int pos,int data);
int delete_pos(Pseq p,int pos);
int delete_data(Pseq p,int data);
int change_data(Pseq p,int old_data,int new_data);
int change_pos(Pseq p,int pos,int new_data);
int search_data(Pseq p,int data);
int search_pos(Pseq p,int pos);
#endif
sxb.c
/*===============================================
* 文件名称:sxb.c
* 创 建 者:crx
* 创建日期:2023年08月22日
* 描 述:
================================================*/
#include "sxb.h"
void seqlist_init(Pseq *p,int len)
{
*p = malloc(sizeof(Seq));
if(NULL == p)
{
perror("malloc");
return;
}
(*p)->arr = malloc(sizeof(int)*len);
if(NULL == (*p)->arr)
{
perror("malloc");
free(p);
return;
}
(*p)->len = len;
(*p)->tail = 0;
return;
}
Pseq seqlist_create(int len)
{
Pseq p = malloc(sizeof(Pseq));
if(NULL == p)
{
perror("malloc");
return NULL;
}
p->arr = malloc(sizeof(int)*len);
if(NULL == p->arr)
{
perror("malloc");
free(p);
return NULL;
}
p->len = len;
p->tail = 0;
return p;
}
int empty_list(Pseq p)
{
return p->tail == 0;
}
int full_list(Pseq p)
{
return p->tail == p->len;
}
int length(Pseq p)
{
return p->tail;
}
void show(Pseq p)
{
if(NULL == p)
{
return;
}
for(int i = 0;i < p->tail;i++)
{
printf("%d ",p->arr[i]);
}
puts("");
}
int insert_data(Pseq p,int pos,int data)
{
if(NULL == p)
{
return -1;
}
if(pos < 0 || pos > p->tail || full_list(p))
{
return -2;
}
for(int i = p->tail;i > pos;i--)
{
p->arr[i] = p->arr[i-1];
}
p->arr[pos] = data;
p->tail++;
return 1;
}
int delete_pos(Pseq p,int pos)
{
if(NULL == p)
{
return -1;
}
if(pos >= p->tail || pos < 0 || empty_list(p))
{
return -2;
}
int data = p->arr[pos];
for(int i = pos;i < p->tail-1;i++)
{
p->arr[i] = p->arr[i+1];
}
p->tail--;
return data;
}
int delete_data(Pseq p,int data)
{
if(NULL == p)
{
return -1;
}
for(int i = 0;i < p->tail;i++)
{
for(int i = 0;i < p->tail;i++)
{
if(data == p->arr[i])
{
for(int j = i;j < p->tail-1;j++)
{
p->arr[j] = p->arr[j+1];
}
p->tail--;
}
}
}
return 1;
}
int change_data(Pseq p,int old_data,int new_data)
{
if(NULL == p)
{
return -1;
}
for(int i = 0;i < p->tail;i++)
{
if(p->arr[i] == old_data)
{
p->arr[i] = new_data;
}
}
return 1;
}
int change_pos(Pseq p,int pos,int new_data)
{
if(NULL == p)
{
return -1;
}
p->arr[pos] = new_data;
return 1;
}
int search_data(Pseq p,int data)
{
if(NULL == p)
{
return -1;
}
int pos = 0;
for(int i = 0;i < p->tail;i++)
{
if(p->arr[i] == data)
{
pos = i;
break;
}
}
return pos;
}
int search_pos(Pseq p,int pos)
{
if(NULL == p)
{
return -1;
}
return p->arr[pos];
}
main.c
/*===============================================
* 文件名称:main.c
* 创 建 者:crx
* 创建日期:2023年08月22日
* 描 述:
================================================*/
#include "sxb.h"
int main(int argc, char *argv[])
{
int data,len,pos,old_data,new_data = 0;
printf("*****************seqlist_init*********************\n");
printf("请输入要开辟的顺序表大小:\n");
len = 0;
scanf("%d",&len);
Pseq p;
//seqlist_init(&p,len);
p = seqlist_create(len);
printf("********************empty_list********************\n");
data = empty_list(p);
printf("空表为1:\n");
printf("%d\n",data);
printf("*******************insert_data********************\n");
printf("请输入9个数据:\n");
for(int i = 0;i < 9;i++)
{
scanf("%d",&data);
insert_data(p,i,data);
}
printf("***********************show***********************\n");
show(p);
printf("***********************insert*********************\n");
printf("请输入要插入的下标位置及数据\n");
scanf("%d %d",&pos,&data);
insert_data(p,pos,data);
printf("插入后如下:\n");
show(p);
printf("***********************length*********************\n");
len = length(p);
printf("表的长度为:%d\n",len);
printf("**********************full_list*******************\n");
data = full_list(p);
printf("表满为1:\n");
printf("%d\n",data);
printf("**********************change_pos******************\n");
printf("请输入要改变的下标位置与改变后的值:\n");
scanf("%d %d",&pos,&data);
change_pos(p,pos,data);
printf("改变后如下:\n");
show(p);
printf("**********************change_data*****************\n");
printf("请输入要改变的数据与改变后的值:\n");
scanf("%d %d",&old_data,&new_data);
change_data(p,old_data,new_data);
printf("改变后如下:\n");
show(p);
printf("***********************search_pos*****************\n");
printf("请输入要查找的下标位置:\n");
scanf("%d",&pos);
data = search_pos(p,pos);
printf("位置对应的数据为:%d\n",data);
printf("***********************search_data****************\n");
printf("请输入要查找的数据:\n");
scanf("%d",&data);
pos = search_data(p,data);
printf("数据第一次出现对应的下标位置为:%d\n",pos);
printf("***********************delete_pos*****************\n");
printf("请输入要删除的数据位置下标:\n");
scanf("%d",&pos);
data = delete_pos(p,pos);
printf("数据%d已删除\n",data);
show(p);
printf("*********************delete_data******************\n");
printf("请输入要删除的数据:\n");
scanf("%d",&data);
delete_data(p,data);
printf("删除后如下:\n");
show(p);
printf("**********************full_list*******************\n");
data = full_list(p);
printf("表满为1:\n");
printf("%d\n",data);
return 0;
}
makefile
a.out:sxb.o main.o
gcc sxb.o main.o -o a.out
sxb.o:sxb.c
gcc -c sxb.c -o sxb.o
main.o:main.c
gcc -c main.c -o main.o
clean:
rm a.out sxb.o main.o
结果

博客提及了sxb.h、sxb.c、main.c等代码文件以及makefile,与信息技术相关,可能涉及代码的组织和编译等内容。
2108

被折叠的 条评论
为什么被折叠?



