表达式必须包含指向对象的指针类型,但它具有类型 "int"

问题描述:

#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

#define maxsize 999

typedef struct List

{

    int Data[maxsize];

    int length;

}P;

 

void Initialization(P *L)// 初始化顺序表 

{

    

    L->length=0;

}

 

int Createlist(P *L)//  创建顺序表 

{

    int n;

    int k;

    printf("输入所需顺序表的长度:");

    scanf("%d",&n);

    int a[n];

    for (k = 0; k < n; k++)

    {

        printf("请输入第%d个位置的值: ",k);

        scanf("%d",&a[k]);

        L->length[k] = a[k];

    }

 

        L->length = n;

}

 

void Printflist(P *L)//  遍历顺序表 

{

    for(int i=0;i<L->length;i++)

    {

        printf("%d ",(L->Data[i]));

    }

}

 

int insert(P *L,int i,int val)// *增:在特定位置插入特定值

{

    if(L->length==maxsize)

    {

        printf("存储空间已满!\n");

        return 0;

    }

    for(int j=L->length-1;j>=i-1;j--)

    {

        L->Data[j+1]=L->Data[j];//  顺序表长度增加一位后,将原来第i位置后的每一位元素向后移一位 

    }

    L->Data[i-1]=val;

    L->length++;//  顺序表长度增加1 

    return 1;

 } 

 

 int del(P *L,int i,int *val)//  *删:删除特定位置的值

 {

    *val=L->Data[i-1];//  将要删除的值存放在该指针中 

    for(int j=i;j<=L->length-1;j++)

    {

        L->Data[j-1]=L->Data[j];//  顺序表长度减少一位后,将原来第i位置后的每一位元素向前移一位 

     }

     L->length--;//  顺序表长度减少1 

  } 

  

  int seek(P *L,int i,int *val)//  *查:查询特定位置的值 

  {

    *val=L->Data[i-1];//  将要查询的值存放在该指针中 

  }

  

  int change(P *L,int i,int x,int *val)//  *改:在特定位置更改所需值 

  {

    *val=L->Data[i-1];//  将所改值存放在该指针中 

    L->Data[i-1]=x;

  }

  

  int main()

  {

    

    P *list;

    int val1;

    int val2;

    int val3;

      //Initialization(list);

      Createlist(list);

      {

        printf("创建的顺序表为:\n");

      }

      Printflist(list);

      seek(list,1,&val1);

      {

        printf("\n查找的值为: %d",val1);

       } 

      insert(list,1,100);

      {

        printf("\n插入所需值后的顺序表为:\n");

      }

      Printflist(list);

      del(list,2,&val2);

      {

        printf("\n删除的值为:%d,删除后的顺序表为:\n",val2);

      }

      Printflist(list);

      change(list,3,77,&val3);

      {

        printf("\n改变的值为:%d,改变后的顺序表为:\n",val3);

      }

      Printflist(list);

      return 0;

   } 

新手写的顺序表,但是创建部分出现的问题不知道怎么解决,求救~~~

   int a[n]; 不可以这么定义c++的数组

int Createlist(P* L)//  创建顺序表 

{
    int n;

    int k;

    printf("输入所需顺序表的长度:");

    scanf("%d", &n);

    int a[1000];

    for (k = 0; k < n; k++)

    {
        printf("请输入第%d个位置的值: ", k);

        scanf("%d", &a[k]);

        L->length = a[k];

    }



    L->length = n;

}

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632