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 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据