• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

wchenfeng

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

定义顺序表,编写顺序表初始化函数、插入函数(在某个位置插入一个元素)、查找函数(按值查找)、删除函数(删除顺序表中某个位置上的元素)、输出函数(显示顺序表中每个元素)、主函数。

有关插入函数、查找函数、删除函数参数如下:

插入函数insertSeqList(SeqList *L,int i, dataType x);//在L中第i个位置插入x

查找函数searchSeqList(SeqList *L,dataType x);//查找x是否在L中,若有返回x在L中的位序,若没有返回0;

删除函数delSeqList(SeqList *L,int i);//删除L中第i个元素,并返回其值。

本函数支持 

	printf("\n输入你要选择的命令\n");
	printf("1、展示一切信息\n");
	printf("2、插入\n");
	printf("3、销毁表\n");
	printf("4、初始化表\n");
	printf("5、查找信息\n");
	printf("6、删除信息\n");
	printf("7、退出\n");
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
typedef int dataType;
typedef struct {
	int data[100];//数据
	int length;//长度
}SeqList;

SeqList *init();
void show(SeqList *L);
void insert(SeqList *L,int i,int e);
int delSeqList(SeqList *L,int i);
int searchSeqList(SeqList *L,dataType e);
int insertSeqList(SeqList *L,int i,dataType e);
void destorylist(SeqList *L);
void choose(SeqList *L);
void mingling(SeqList *L,int n);
/*详情介绍:想要一个新表的的操作如下
首先先销毁表,释放空间;
然后初始化表,申请空间;
接着插入数据,数据填充;
最后查看信息,数据展示;
*/

//主函数
int main(){
	SeqList *L;
	int e;
	L=init();
	//表中最初的内容
	L->data[0]=10;
	L->data[1]=20;
	L->data[2]=30;
	L->data[3]=40;
	L->length=4;
	show(L);
	choose(L);
	destorylist(L);
}
//初始化表格
SeqList *init()
{
	SeqList *L;
	//申请空间
	L=(SeqList *)malloc(sizeof(SeqList));
	//长度为0
	L->length=0;
	return L;
}
//展示表格
void show(SeqList *L)
{
	int i;
	//依次展示数组内容
	for(i=0;i<L->length;i++)
	    printf("%d   ",L->data[i]);
}
//进行插入信息
void insert(SeqList *L,int i,int e)
{
    int j;
	//判断插入位置是否出错
	if(i<1||i>L->length)
		printf("插入出错\n");
	i--;
	for(j=L->length;j>i;j--)//将数组的位置全部往后移动一位,直到插入位置
		L->data[j]=L->data[j-1];
	L->data[i]=e;//目标位置插入相应的数据
	L->length++;//长度加一

}
//进行查找信息
int searchSeqList(SeqList *L,dataType e)
{
	
	int i=0;
	//进行排查对应要查找的数据的位置
	while(i<L->length&&L->data[i]!=e)
		i++;
	if(i>=L->length)
		return 0;//0表示找不到
	else return i+1;//返回它的位数
}
//销毁表
void destorylist(SeqList *L)
{
	free(L);//释放空间
}
//选择
void choose(SeqList *L)
{
	int n;
	printf("\n输入你要选择的命令\n");
	printf("1、展示一切信息\n");
	printf("2、插入\n");
	printf("3、销毁表\n");
	printf("4、初始化表\n");
	printf("5、查找信息\n");
	printf("6、删除信息\n");
	printf("7、退出\n");
	scanf("%d",&n);
	mingling(L,n);
}
//命令执行
void mingling(SeqList *L,int n)
{
	int n1,i,flag;int e;
	switch(n)
	{
	case 1: show(L);choose(L);break;
	case 2: 
		{
			printf("你想插入的位置  数据:\n");
			scanf("%d %d",&i,&e);
			insert(L,i,e);
			show(L);
			choose(L);
		}break;
	case 3:destorylist(L);choose(L);break;
	case 4:init();choose(L);break;
	case 5:
		{ 
			printf("你想查找的数据:\n");
			scanf("%d",&e);
			flag=searchSeqList(L,e);
			if(flag==0)printf("未找到该信息\n");
			else printf("找到该信息,信息为:%d位于表中第%d位\n",e,flag);
			choose(L);
		}break;
	case 6:
		{
			printf("你想删除第几位的数据:\n");
			scanf("%d",&i);
			flag=delSeqList(L,i);
			if(flag==-1)printf("未执行命令");
			else printf("删除了第%d位信息\n被删除的第%d位上数据为%d",i,i,flag);
			choose(L);
		}break;
	case 7:exit(0);break;
	default: choose(L);break;
	}
}
//删除第几位数据
int delSeqList(SeqList *L,int i)
{
	int j,temp;
	//判断输入的删除位数是否出错
	if(i<1||i>L->length)
		return -1;
	//将位数调整为下标
	i--;
	//临时存储被删单元内容
	temp=L->data[i];
	//在对应的下标初,进行后续的数组前移
	for(j=i;j<L->length-1;j++)
		L->data[j]=L->data[j+1];
	//长度减一
	L->length--;
	//返回被删的数据内容
	return temp;
}

输入

看各位想法

插入输出

 查找输出

 删除输出

 展示输出

 如果要想新建表

想要一个新表的的操作如下
首先先销毁表,释放空间;
然后初始化表,申请空间;
接着插入数据,数据填充;
最后查看信息,数据展示;

类似

这里显示插入出错,是因为代码里面设置了插入位置大于length,便显示出错,而创建新表,length=0。不过并不影响输出。

posted on 2022-04-12 20:02  王陈锋  阅读(438)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3