不知道大家有没有这样的情况,就是经常翻阅别人博客关于数据结构的文章,但对于其中还是有许多不明白的地方,甚至是代码运行不起来。
本人是个渣渣,所以依据数据结构——c语言描述来写了这个线性表的基本操作,希望能帮助大家,也是给自己做个笔记。
#include"stdio.h"
#include"stdlib.h"
#include"malloc.h"
#define MAXSIZE 25
typedef struct
{
int elem[MAXSIZE];
int last;
}SeqList;
int GetData(SeqList *L,int i)
{
return L->elem[i-1];
}
int InsList(SeqList *L,int i,int e)
{
int k;
if((i<1)||(i>L->last+2))
{
printf("插入位置i值不合法!");
return -1;
}
if(L->last>=MAXSIZE-1)
{
printf("超出了链表的最大范围,无法插入无法插入!");
return -1;
}
for(k=L->last;k>=i-1;k--)
L->elem[k+1]=L->elem[k];
L->elem[i-1]=e; L->last++;
return 1;
}
int DelList(SeqList *L,int i,int *e)
{
int k;
if((i<1)||(i>L->last+1))
{
printf("删除位置不在表中,不合法!");
return -1;
}
*e=L->elem[i-1];
for(k=i;k<=L->last;k++)
L->elem[k-1]=L->elem[k];
L->last--;
return 1;
}
int SumList(SeqList *L)
{
int sum=0;
for(int i=0;i<=L->last;i++)
{
sum+=L->elem[i];
}
return(sum);
}
int main()
{
SeqList *l;
int p; //要查找的位置
int *q;
int r; //线性表的长度
int t; //插入的元素
int s; //删除的位置
int w; //要插入的位置
int i;
l=(SeqList *)malloc(sizeof(SeqList));
q=(int*)malloc(sizeof(int));
printf("请输入线性表的长度:");
scanf("%d",&r); l->last=r-1;
printf("请输入线性表中的各元素值:\n");
for(i=0;i<=l->last;i++)
{
scanf("%d",&l->elem[i]);
}
printf("线性表中所有元素之和是:%d\n",SumList(l));
printf("请输入要查找的位置: ");
scanf("%d",&p);
printf("查找的元素是:%d\n",GetData(l,p));
printf("请输入要插入的位置:");
scanf("%d",&w);
printf("插入的元素是: ");
scanf("%d",&t);
InsList(l,p,t);
printf("插入后的线性表:\n");
for(i=0;i<=l->last;i++)
{
printf("%d ",l->elem[i]);
}
printf("\n");
printf("请输入要删除的位置:");
scanf("%d",&s);
DelList(l,s,q);
printf("删除的元素值是:%d\n",*q);
printf("删除后的线性表:\n");
for(i=0;i<=l->last;i++)
{
printf("%d ",l->elem[i]);
}
return 0;
}