#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct//创建结构体
{
int *elem;
int length;
}Sqlist;
int chushihua(Sqlist &L)
{
L.elem=new int[MAXSIZE];
if(!L.elem)
{
exit(1);
}
L.length=0;
return 0;
}
//输出顺序表的元素
int Print(Sqlist L)
{
if(L.length)
{
printf("\n输出顺序表中的元素:");
for(int i=0;i<L.length;i++)
{
printf("%d ",L.elem[i]);
}
printf("\n");
}
else
printf("\n存储错误!!!");
return 0 ;
}
void create(Sqlist &L,int n)
{
printf("\n需要存储的元素个数:");
scanf("%d",&n);
printf("\n请输入%d个数:",n);
if(n<0||n>MAXSIZE)
exit(1);
for(int i=0;i<n;i++)
{
scanf("%d",&L.elem[i]);
L.length++;
}
}
//查询的元素是否存在并返回位置
int Search(Sqlist &L,int n)
{
printf("\n请输入要查找元素的值:");
scanf("%d",&n);
int flag=0;
for(int i=0;i<L.length;i++)
{
if(L.elem[i]==n)
{
printf("\n存在该元素,存储位置为%d",i+1);
flag=1;
break;
}
}
if(flag==0)
{
printf("不存在该元素!!!!");
}
return 0;
}
//插入元素
int Insertlist(Sqlist &L,int a,int n)
{
printf("\n请输入元素所插入的位置:");
scanf("%d",&n);
if(n<0||n>MAXSIZE)
exit(1);
for (int i=L.length;i>=n;i--)
{
L.elem[i]=L.elem[i-1];
}
printf("\n请输入插入元素的值:");
scanf("%d",&a);
L.elem[n-1]=a;
L.length++;
printf("\n插入后的元素输出为:");
Print(L);
return 0;
}
//删除某个元素
int Delete(Sqlist &L,int n)
{
printf("\n请输入要删除的位置:");
scanf("%d",&n);
if(n<0||n>MAXSIZE)
exit(1);
for(int i=n;i<L.length;i++)
{
L.elem[i-1]=L.elem[i];
}
L.length--;
printf("\n插入后的元素输出为:");
Print(L);
}
void menu()
{
printf("\t\t\t********************欢迎来到顺序表存储基本操作*****************************");
printf("\n\t\t\t**************1.创建顺序表-------------------2.插入元素********************\n");
printf("\n\t\t\t**************3.删除元素 -------------------4.查找元素********************\n");
printf("\n\t\t\t**************5.输出顺序表-------------------6.退出程序********************\n");
printf("\n\t\t\t***************************************************************************\n");
}
int main()
{
Sqlist L;
int n,a;
int choice;
chushihua(L);
while(1)
{
menu();
printf("请输入功能序号:");
scanf("%d",&choice);
if(choice==6)
break;
switch(choice)
{
case 1:
create(L,n);
break;
case 2:
Insertlist(L,a,n);
break;
case 3 :
Delete(L,n);
break;
case 4:
Search(L,n);
break;
case 5:
Print(L);
break;
default:
printf("输入有误!!!");
break;
}
}
return 0;
}
学习了这么久的数据结构一直没有自己手动完整的打过一次,虽说简单但也在其中收获了不少;