|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
# define INCREMENT 5
# define ERROR -1
# define LISTSIZE 10
# include<stdio.h>
# include<stdlib.h>
typedef struct{
int *data;
int length;
int listsize;
}Seqlist;
int Initial(Seqlist *L)
{
L->data=(int*)malloc(LISTSIZE*sizeof(int));
if(!(L->data))
return ERROR;
L->length=0;
L->listsize=LISTSIZE;
}
void creat(Seqlist *L)
{
int a,i;
printf("请输入要创建的元素个数: ");
scanf("%d",&a);
for(i=0;i<a;i++)
{
printf("第%d个元素为:",i+1);
scanf("%d",&L->data[i]);
L->length++;
}
}
void show(Seqlist *L)
{
int i;
printf("线性表中的元素为:");
for(i=0;i<L->length;i++)
printf("%d ",L->data[i]);
printf("\n");
}
int getelem(Seqlist *L)
{
int i;
printf("请输入你需要查找第几号元素:");
scanf("%d",&i);
printf("您查询的结果是:%d\n",L->data[i-1]);
}
int listinsert(Seqlist *L,int i,int e)
{
int j;
if(i<1||i>L->length+1)
return ERROR;
else if(L->length=LISTSIZE)
return ERROR;
else
{
for(j=L->length-1;j>=i-1;j--)
L->data[j+1]=L->data[j];
L->data[i-1]=e;
L->length++;
return 0;
}
}
int listdelete(Seqlist *L,int i,int e)
{
int j;
e=L->data[i-1];
if(i<1||i>L->length)
return ERROR;
else
{
for(j=i;j<=L->length-1;j++)
L->data[j-1]=L->data[j];
L->length--;
}
return 0;
}
int main()
{
Seqlist L;
int a;
Initial(&L);
creat(&L);
show(&L);
getelem(&L);
listinsert(&L,2,a);
show(&L);
listdelete(&L,2,a);
show(&L);
putchar('\n');
return 0;
}
本帖最后由 ba21 于 2018-3-26 20:55 编辑
#include<stdio.h>
#include<stdlib.h>
#define INCREMENT 5
#define OK 1
#define ERROR -1
#define LISTSIZE 10
typedef struct{
int *data;
int length;
int listsize;
}Seqlist;
int Initial(Seqlist *L)
{
L->data=(int*)malloc(LISTSIZE*sizeof(int));
if(!(L->data))
return ERROR;
L->length=0;
L->listsize=LISTSIZE;
return OK;
}
int creat(Seqlist *L)
{
int a,i;
printf("请输入要创建的元素个数: ");
scanf("%d",&a);
if(a>LISTSIZE)
{
printf("元素个数不能超过 %d 个。\n", LISTSIZE);
return ERROR;
}
for(i=0;i<a;i++)
{
printf("第%d个元素为:",i+1);
scanf("%d",&L->data[i]);
L->length++;
}
return OK;
}
void show(Seqlist *L)
{
int i;
printf("线性表中的元素为:");
for(i=0;i<L->length;i++)
printf("%d ",L->data[i]);
printf("\n");
}
int getelem(Seqlist *L)
{
int i;
printf("请输入你需要查找第几号元素:");
scanf("%d",&i);
if(i<1 || i>L->length) // 当i不在范围内时
{
printf("%d 号元素不存在!\n", i);
return ERROR;
}
printf("您查询的结果是:%d\n",L->data[i-1]);
return OK;
}
int listinsert(Seqlist *L,int i,int e)
{
int k;
if(L->length == LISTSIZE) // 顺序线性表已经满了
{
return ERROR;
}
if(i<1 || i>L->length) // 当i不在范围内时
{
return ERROR;
}
if(i <= L->length) // 若插入数据位置不在表尾
{
/* 将要插入位置后数据元素向后移动一位 */
for(k=L->length-1; k>=i-1; k--)
{
L->data[k+1] = L->data[k];
}
}
L->data[i-1] = e;
L->length++;
return OK;
}
int listdelete(Seqlist *L,int i,int *e)
{
int k;
if(L->length == 0) // 空表
{
return ERROR;
}
if(i<1 || i>L->length) // 删除的位置不正确
{
return ERROR;
}
*e = L->data[i-1];
printf("%d, %d\n", L->length, i);
if(i<=L->length)
{
for(k=i; k<=L->length; k++)
{
L->data[k-1] = L->data[k];
}
}
L->length--;
return OK;
}
int main()
{
Seqlist L;
int a, b;
// 初始化
Initial(&L);
if(creat(&L)==OK)
{
// 显示
show(&L);
// 获取元素
getelem(&L);
// 插入元素
printf("请输入要插入的元素:");
scanf("%d", &a);
listinsert(&L,2,a);
show(&L);
// 删除元素
printf("执行删除操作:\n");
listdelete(&L,2,&b);
printf("删除的元素是: %d\n", b);
show(&L);
putchar('\n');
}
return 0;
}
|
-
|