|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码
|
-
|