线性表的基本操作

来源:互联网 发布:大数据课程培训大纲 编辑:程序博客网 时间:2024/05/17 02:56

不知道大家有没有这样的情况,就是经常翻阅别人博客关于数据结构的文章,但对于其中还是有许多不明白的地方,甚至是代码运行不起来。

本人是个渣渣,所以依据数据结构——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;
}


原创粉丝点击