一、对顺序表的基本操作
1.1定义顺序表结构体
1.2创建一个顺序表
1.3从尾部操作
1)从尾部插入数据
2)从尾部删除数据
1.4遍历顺序表、
1.5按下标操作
1)按下标位置进行插入
2)按下标位置删除数据
3)按下标位置修改数据
4)按下标位置查询数据

#ifndef __SEQLIST_H
#define __SEQLIST_H
#define N 100
typedef int dataType;
typedef struct
{
dataType arr[N];
int pos;
}SeqList;
SeqList * creat_seqList(void);
void insert_seqlist(SeqList * sl,dataType data);
dataType delete_seqlist(SeqList * sl);
void show_seqlist(SeqList *sl);
void insert_seqlistBy_index(SeqList * sl,int index,dataType date);
dataType delete_seqlistBy_index(SeqList * sl,int indexi);
void amend_seqlistBy_index(SeqList * sl,int index,dataType date);
void inqyiry_seqlistBy_index(SeqList * sl,int index);
#endif
#include <stdio.h>
#include <stdlib.h>
#include "./3_seqlist.h"
int main(int argc, const char *argv[])
{
SeqList *sl=creat_seqList();
insert_seqlist(sl,100);
insert_seqlist(sl,90);
insert_seqlist(sl,80);
insert_seqlist(sl,70);
insert_seqlist(sl,60);
insert_seqlist(sl,50);
show_seqlist(sl);
delete_seqlist(sl);
show_seqlist(sl);
insert_seqlistBy_index(sl,2,30);
show_seqlist(sl);
dataType del=delete_seqlistBy_index(sl,3);
printf("下标删除数据是%d\n",del);
show_seqlist(sl);
amend_seqlistBy_index(sl,4,88);
show_seqlist(sl);
inqyiry_seqlistBy_index(sl,1);
free(sl);
sl=NULL;
return 0;
}
/*
* function: // 创建顺序表
* @param [ in]
* @param [out]
* @return
*/
#include <stdio.h>
#include <stdlib.h>
#include "./3_seqlist.h"
SeqList * creat_seqList(void)
{
SeqList *sl=(SeqList *)malloc(N*sizeof(SeqList));
if(NULL==sl)
{
printf("malloc error\n");
return NULL;
}
sl->pos=0;
return sl;
}
/*
* function: //顺序表存入数据
* @param [ in]
* @param [out]
* @return
*/
void insert_seqlist(SeqList * sl,dataType data)
{
//判断顺序表是否为满
if(sl->pos>=N)
{
printf("顺序表已满,数据存入失败!\n");
return;
}
//存入数据
sl->arr[sl->pos]=data;
sl->pos++;
return;
}
/*
* function: //顺序表删除数据
* @param [ in]
* @param [out]
* @return
*/
dataType delete_seqlist(SeqList * sl)
{
//判断顺序表是否为空
if(sl->pos<=0)
{
printf("顺序表为空,数据删除失败\n");
return -1;
}
//pos--
sl->pos--;
return sl->arr[sl->pos];
}
/*
* function: \\顺序表查询数据
* @param [ in]
* @param [out]
* @return
*/
void show_seqlist(SeqList *sl)
{
for(int i=0;i<sl->pos;i++)
printf("%d\t",sl->arr[i]);
putchar(10);
return;
}
/*
* function: //按照下标插入保存数据
* @param [ in]
* @param [out]
* @return
*/
void insert_seqlistBy_index(SeqList * sl,int index,dataType date)
{
//判断顺序表是否为满
if(sl->pos>=N)
{
printf("顺序列表已满,数据插入失败\n");
return;
}
//判断下标是否合法
if(index>sl->pos ||index<0)
{
printf("插入位置不合法,数据插入失败\n");
return;
}
//插入数据
for(int i=sl->pos;i>index;i--)
sl->arr[i]=sl->arr[i-1];
sl->arr[index]=date;
//pos++
sl->pos++;
return ;
}
/*
* function: //按照下标位置删除数据
* @param [ in]
* @param [out]
* @return
*/
dataType delete_seqlistBy_index(SeqList * sl,int index)
{
//判断顺序表是否为空
if(sl->pos<=0)
{
printf("顺序列表已空,数据删除失败\n");
return -1;
}
//判断下标是否合法
if(index>sl->pos ||index<0)
{
printf("删除位置不合法,数据删除失败\n");
return -1;
}
dataType del=sl->arr[index];
//删除数据
for(int i=index;i<=sl->pos-2;i++)
sl->arr[i]=sl->arr[i+1];
//pos--
sl->pos--;
return del;
}
/*
* function: //通过下标修改数据
* @param [ in]
* @param [out]
* @return
*/
void amend_seqlistBy_index(SeqList * sl,int index,dataType date)
{
//判断下标是否合法
if(index>=sl->pos ||index<0)
{
printf("修改位置不合法,数据修改失败\n");
return;
}
//修改数据
sl->arr[index]=date;
return ;
}
/*
* function: //通过下标查询数据
* @param [ in]
* @param [out]
* @return
*/
void inqyiry_seqlistBy_index(SeqList * sl,int index)
{
//判断下标是否合法
if(index>=sl->pos ||index<0)
{
printf("查询位置不合法,数据查询失败\n");
return ;
}
//打印查询数据
printf("查询数据为:%d\n", sl->arr[index]) ;
return;
}
本文详细介绍了如何在C语言中使用结构体实现顺序表,包括创建顺序表、插入数据、删除数据、遍历顺序表以及按下标进行插入、删除、修改和查询操作。
256

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



