数据结构程序设计 数序线性表实现插入删除数据.doc
- 格式:doc
- 大小:25.00 KB
- 文档页数:3
#include<stdio.h>
#include<stdlib.h>
#define LISTSIZE 8
#define LISTINCREMENT 2
typedef struct
{
int *elem;
int length;
int listsize;
}Sqlist;
void Listset(Sqlist&L)
{
L.elem=(int *)malloc(LISTSIZE*sizeof(int));
if(!L.elem)
exit(0);
L.listsize=LISTSIZE;
printf("请输入线性表长度:");
scanf("%d",&L.length);
printf("请输入线性表各元素的值");
for(int i=0;i<=L.length-1;i++)
scanf("%d",&L.elem[i]);
}
int ListInsert(Sqlist &L,int i,int e)
{
int *p=NULL,*q=NULL;
int *newbase;
if(i<1||i>L.length+1)
return 0;
if(L.length>+L.listsize)
{
newbase=(int *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(int));
if(!newbase) exit(0);
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++L.length;
return 1;
}
int ListDelete(Sqlist &L,int i,int &e)
{
int *p=NULL,*q=NULL;
if(i<1||i>L.length)
return 0;
p=&(L.elem[i-1]);
e=*p;
q=L.elem+L.length-1;
for(++p;p<=q;++p)
*(p-1)=*p;
--L.length;
return 1;
}
void main()
{
Sqlist L;
Listset(L);
int a,b,c;
for(int i=0;i<=L.length-1;i++)
printf("%d ",L.elem[i]);
printf("\n");
ListInsert(L, 4, 3);
for(int j=0;j<=L.length-1;j++)
printf("%d ",L.elem[j]);
printf("\n");
ListInsert(L, 6, 21);
for(int k=0;k<=L.length-1;k++)
printf("%d ",L.elem[k]);
printf("\n");
ListInsert(L, 2, 15);
for(int o=0;o<=L.length-1;o++)
printf("%d ",L.elem[o]);
printf("\n");
ListDelete(L, 5 ,a);
for(int a1=0;a1<=L.length-1;a1++) printf("%d ",L.elem[a1]);
printf("\n");
ListDelete(L, 3,b);
for(int a2=0;a2<=L.length-1;a2++) printf("%d ",L.elem[a2]);
printf("\n");
ListDelete(L, 12 ,c);
for(int a3=0;a3<=L.length-1;a3++) printf("%d ",L.elem[a3]);
printf("\n");
}。