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