C语言数据结构期末复习之顺序表基本算法的实现
#include<stdio.h>
#define MaxSize 30
typedef int DataType;
typedef struct{
DataType data[MaxSize];
int length;
}Sqlist;
//创建顺序表结构体
void InitList(Sqlist *L)
{
L->length=0;
}
//顺序表的初始化
bool ListEmpty(Sqlist *L)
{
return (L->length==0);
}
//判断顺序表是否为空返回bool类型
void Destroy(Sqlist L)
{
}
//销毁顺序表
int getLength(Sqlist L)
{
return L.length;
}
//返回顺序表的长度
void DispList(Sqlist *L)
{
int i;
for(i=0;i<L->length;i++)
{
printf("%d\t",L->data[i]);
}
printf("\n");
}
//打印顺序表
void CreatList(Sqlist *L,DataType a[],int n)
{
int i;
InitList(L);
for(int i=0;i<n;i++)
{
L->data[i]=a[i];
}
L->length=n;
}
//创建顺序表
int LocateElem(Sqlist L,DataType e)
{
int i=0;
while(i<L.length&&L.data[i]!=e)
{
i++;
}
if(i>=L.length)
return 0;
else
return i+1;
}
//返回指定元素的位置
int getElem(Sqlist L,int i,DataType *e)
{
if(i<0||i>L.length)
return 0;
else
*e=L.data[i-1];
return *e;
}
//返回指定位置的元素
void Insert(Sqlist *L,int i,DataType n)
{
int j;
if(i<1||i>L->length)
printf("数据错误!\n");
for(j=L->length;j>i;j--)
{
L->data[j]=L->data[j-1];
}
L->data[i]=n;
L->length++;
}
//在指定位置插入指定元素
void Delete(Sqlist *L,int i)
{
if(i<0||i>L->length)
printf("数据错误!");
else
for(int j=i;j<L->length;j++)
L->data[j-1]=L->data[j];
L->length--;
}
//删除指定位置的元素
int main()
{
Sqlist *L;
int n,obj,position,value,InsertPos,InsertVal,DelPos;
printf("请输入数组元素的长度:");
scanf("%d",&n);
DataType a[n];
printf("请输入要为顺序表赋值的数组元素:");
for(int i=0;i<n;i++)
{
scanf("%d",a+i);
}
for(int i=0;i<n;i++)
printf("%d\t",a[i]);
printf("\n");
printf("建立顺序表L:\n");
CreatList(L,a,n);
DispList(L);
printf("请输入要查找的元素:\n");
scanf("%d",&obj);
printf("%d在顺序表L中的位置是%d\n",obj,LocateElem(*L,obj));
printf("请输入要查找的元素的位置:\n");
scanf("%d",&position);
printf("%d位置上的元素为%d\n",position,getElem(*L,position,&value));
printf("请输入顺序表要插入的位置和元素:\n");
scanf("%d %d",&InsertPos,&InsertVal);
Insert(L,InsertPos,InsertVal);
DispList(L);
printf("请输入要删除元素的位置:");
scanf("%d",&DelPos);
Delete(L,DelPos);
DispList(L);
printf("顺序表L的长度为:%d\n",getLength(*L));
printf("顺序表L是否为null?%d",ListEmpty(L));//bool类型可用整型1或0输出 1----true 0----false
}
还有一个月就要期末考试了,得把复习放在日常安排上了。今天下午没课然后就想着复习复习基本算法叭。
从一年前的只会hello world的那个编程小白痴变成了如今能敲上百行的系统的小白,这中间需要的是拼尽全力。
爱编程,爱生活。
加油,冲鸭!!