线性表的 赋值,插入,与元素的删除

来源:互联网 发布:07版excel编程入门教程 编辑:程序博客网 时间:2024/05/25 21:35
#include<stdio.h>
#define MAXSIZE 20
#define YES  0
#define NO   1


typedef int data_t;
typedef struct stu
{
data_t  data[MAXSIZE];
int length;
}sq_list;
sq_list *CreateListSq()//申请内存空间
{
sq_list *sq=NULL;
if(NULL==(sq=(sq_list*)malloc(sizeof(sq_list))))
{
perror("create fail:");
exit(NO);
}
sq->length=0;
return sq;
}
int  getele(sq_list *M,int i,data_t *n)//取出线性表中第i的一个元素
{
if(i>=M->length||i<0)
perror("get element fail:");
else
*n=M->data[i];
return YES;


}
/*在第i个位置插入一个元素*/
int  eleinsert(sq_list *M,int i,data_t n)
{
if(i>M->length||i<0)//判断插入位置错误
{
perror("insert fail:");
exit (-1);
}
if(i==MAXSIZE)//判断线性表是否已满
{
printf("file full:");
exit(-1);
}
int k;
if(i<M->length)//插入位置正确,但不在线性表尾部
{
for(k=M->length-1;k>=i;k--)
{
M->data[k+1]=M->data[k];
}
}
M->data[i]=n;
M->length++;


return YES;
} /*删除第i个元素*/
int  eledelete(sq_list *L,int i,int *dat)
{
if(i>=L->length||i<0)//删除位置不正确
{
perror("delete fail:");
exit(-1);
}
if(L->length==0)//线性表文件长度为空
{
perror("file is null:");
exit(-1);
}
int k;
if(i<L->length)//删除位置正确时
{
for(k=i;k<L->length;k++)
{
L->data[k]=L->data[k+1];
}
}
*dat=L->data[i];
L->length--;
return YES;
}


int print(sq_list *L)//打印整个线性表
{
int k;
int num;
if(L->length==0)
{
perror("***NULL***");
exit(-1);
}
for(k=0;k<L->length;k++)
{
getele(L,k,&num);
printf("%d\t",num);
}
printf("\n");
return YES;
}
int main(int argc, const char *argv[])
{
sq_list *sq;
sq=CreateListSq();
data_t i;
data_t k;
int tope;
for(i=0;i<5;i++)//对线性表赋值
{
sq->data[sq->length]=i;
sq->length++;
}
if(getele(sq,3,&k)==YES)
{
printf("%d\n",k);
}
print(sq);
eleinsert(sq,2,10);
print(sq);
eledelete(sq,2,&tope);
print(sq);


return 0;
}
原创粉丝点击