wushao233 2021-06-04 20:03 采纳率: 100%
浏览 21
已采纳

新手写了个顺序表,但是不知道错在哪里了,求救~~~~

下面是全部代码

#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

#define maxsize 999

typedef struct List

{

    int Data[maxsize];

    int length;

}P,*K;

 

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

{

    

    L->length=0;

}

 

int Createlist(P *L,int a[],int n)//  创建顺序表 

{

    if(n>maxsize)

    {

        printf("空间不足,创建顺序表失败!\n");

        return 0;

    }

    for(int i=0;i<n;i++)

    {

        L->Data[i]=a[i];

    }

    L->length=n;

    return 1;

}

 

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

     return 0; 

  } 

  

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

  {

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

     return 0; 

  }

  

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

  {

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

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

     return 0; 

  }

  

  int main()

  {

    int n;

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

    scanf("%d",&n);

    int a[999];

    for(int i=0;i<n;i++)

    {

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

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

      }

    P *list;

    int val1;

    int val2;

    int val3;

      //Initialization(list);

      Createlist(list,a,n);

      {

        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;

   } 

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-06-04 21:43
    关注

     P *list;  ----------------------------list指针根本没有初始化啊,用 P *list = new P;创建一个list指针

        int val1;

        int val2;

        int val3;

          //Initialization(list);

          Createlist(list,a,n);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算