#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<iostream>
typedef struct list
{
int *elem;
int nowlength;
int nowsize;
}list;
int addlist(list &l);//创建表
int inlist(list &l,int i,int e);//添加
int deletelist(list &l,int i);//删除
void display(list &l); //显示
int main()
{
int *record;
list l;
int i;
int a,b;
int just;
just=addlist(l);
record=l.elem;
if(just==0)
{
printf("错误!\n");
}
printf("输入数字:");
for(i = 0;i < 5;i++)
{
scanf("%d",record);
record++;
l.nowlength++;
}
display(l);
printf("\n输入插入的 数字 位置");
scanf("%d%d",&a,&b);
just=inlist(l,b,a);
record=l.elem;
display(l);
printf("\n输入删除的 位置");
scanf("%d",&a);
b=deletelist(l,a);
printf("删除的数为%d\n",b);
display(l);
return 0;
}
int addlist(list &l)
{
l.elem=(int *)malloc(100*sizeof(int));
if(l.elem==0)
{
return 0;
}
l.nowlength=0;
l.nowsize=100;
return 1;
}
int inlist(list &l,int i,int e)
{
int *q,*p,*nembase;
if(l.nowlength>=l.nowsize)
{
*nembase=(int *)realloc(l.elem,(l.nowsize+100)*sizeof(int));
l.elem=nembase;
l.nowsize+=100;;
}
q=l.elem+i-1;
for(p=l.elem+l.nowlength-1;p>=q;p--)
{
*(p+1)=*p;
}
*(p+1)=e;
l.nowlength++;
return 1;
}
int deletelist(list &l,int i)
{
int *p,*q;
int e;
e=*(l.elem+i-1);
for(q=l.elem+i-1;q<=l.elem+l.nowlength-2;q++)
{
*q=*(q+1);
}
l.nowlength--;
return e;
}
void display(list &l)
{
int *record;
int i;
record=l.elem;
for(i=0;i<l.nowlength;i++)
{
printf("%d ",*record);
record++;
}
printf("\n");
}
重学数据结构 顺序表的添加 删除 算法2.4和2.5
最新推荐文章于 2023-07-21 01:40:25 发布