问题描述:使用顺序表完成相关操作
作者;何知令
作者;何知令
完成时间:2017年5月7日
代码:
/*
问题描述:使用顺序表完成相关操作
作者;何知令
完成时间:2017年5月7日
*/
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 15
typedef char ElemType;
typedef struct
{
ElemType data[MaxSize];
int length;
} SqList;
SqList * InitList()//初始化线性表
{
SqList *L=(SqList*)malloc(sizeof(SqList));
L->length=0;
return L;
}
void CreateList(SqList *L,ElemType a[],int n)//创建顺序表且往其中输入数据
{
int i;
for(i=0; i<n; i++)
L->data[i]=a[i];
L->length=n;
}
void DispList(SqList *L)//输出线性表
{
int i;
for(i=0; i<L->length; i++)
printf("%c ",L->data[i]);
printf("\n");
}
int Length(SqList *L)//返回顺序表长度
{
return(L->length);
}
char place_data(SqList *L,int n)//返回顺序表中某位置上的数据
{
return L->data[n-1];
}
int data_place(SqList *L,char e)//返回数据在顺序表中的位置
{
int i;
for(i=0;i<L->length;i++)
{
if(L->data[i]==e)
return i+1;
}
return 0;
}
void input(SqList *L,int n,char e)//往顺序表的第n个位置插入元素
{
int i;
char t;
for(i=L->length;i>n-2;i--)
{
t=L->data[i];
L->data[i+1]=L->data[i];
L->data[i+1]=t;
}
L->length++;
L->data[i+1]=e;
}
void delete_data(SqList *L,int n)//删除顺序表上的第n个元素
{
int i;
for(i=n-1;i<L->length;i++)
{
L->data[i]=L->data[i+1];
}
}
void DestroyList(SqList *L)
{
free(L);
}
int main()
{
SqList *L= InitList();
char str[MaxSize]= {'a','b','c','d','e'};
char e='a';
printf("顺序表的基本运算如下:\n");
printf("初始化顺序表L\n");
printf("依次采用尾插法插入a,b,c,d,e元素\n");
CreateList(L,str,5);
printf("输出顺序表:");
DispList(L);
printf("顺序表的长度为%d\n",Length(L));
printf("顺序表L");
if(Length(L)==0)
printf("为空\n");
else
printf("不为空\n");
printf("顺序表第3个元素=%c\n",place_data(L,3));
printf("元素a的位置=%d\n",data_place(L,e));
printf("在第4个位置上插入元素f\n");
e='f';
input(L,4,e);
printf("输出顺序表L:");
DispList(L);
printf("删除顺序表中的第3个元素\n");
delete_data(L,3);
printf("输出顺序表:");
DispList(L);
printf("释放顺序表\n");
return 0;
}
程序运行结果展示:
知识点总结:顺序表及其相关知识
学习心得:期间开始时顺序表的创建都出问题,说明在数据结构上花的时间远远不足