zbdn 2021-02-22 11:10 采纳率: 64.3%
浏览 94
已采纳

明明写了初始化的程序,却还是说我没有初始化?

 顺序表L1必须要初始化才能执行,我已经编写并调用,却仍然说我的L1没有初始化

#include "stdafx.h"

#include <iostream>
using namespace std;
const int MAX=10;
typedef struct List
{ int length;
int top;
int a[MAX];
int *elem;}list;
int a[10];
int length=10;
list deletelist(list S,int n);
list InitList_Sq(list S);
void display();
list InitList_Sq(list S)//构造一个空的顺序表 
{
	S.elem=new int[MAX];//为顺序表分配一个大小为MAXSIZE的数组空间 
	if(!S.elem) cout<<"存储失败";//存储失败 
	S.length=0;//空表长度为零 

	return S;
}

list Creatlist(list L)
{cout<<"请依次输入编号1-10:";
	for(int i=0;i<length;i++)
	{ if(L.top<length)
	   L.top++;
	cin>>L.a[L.top];}
	return L;
}
list deletelist(list L)
{  cout<<"请输入序号N"<<endl;
L.top=-1;
int n;
   cin>>n;
  for(int i=0;i<length;i++)
	  if(n=i+1)
		{  a[i]=a[i+1];
  L.length--;}
return L;}
void display(list L)
{ cout<<"此时数组中还剩下的元素是:"<<endl;
  for(int i=0;i<1;i++)
	  cout<<a[i];}

int main()
{ list L1;
InitList_Sq(L1);
Creatlist(L1);
deletelist(L1);
display(L1);
	return 0;
}
  • 写回答

2条回答 默认 最新

  • 爱晚乏客游 2021-02-22 14:27
    关注
    #include <iostream>
    
    using namespace std;
    const int MAX=10;
    typedef struct List
    {
        int length;
        int top;
        int a[MAX];
        //int *elem;
    } list;
    
    
    void Creatlist(list &L)
    int deletelist(list &S,int n);
    list InitList_Sq();
    void display();
    
    list InitList_Sq()//构造一个空的顺序表
    {
        list S;
        //看你下面的代码,elem根本就没用到啊
        //S.elem=new int[MAX];//为顺序表分配一个大小为MAXSIZE的数组空间
        //if(!S.elem) cout<<"存储失败";//存储失败
        S.length=0;//空表长度为零
        S.top=-1;//这里的top也要初始化。
        return S;
    }
    
    void Creatlist(list &L)//使用引用的方法传参
    {
        cout<<"请依次输入编号1-10:";
        for(int i=0; i<MAX; i++)
        {
            //if(L.top<MAX)这句多余的
            L.top++;
            L.length++;//存一个数据,长度也要加1
            cin>>L.a[L.top];
        }
    }
    int deletelist(list &L)
    {
        cout<<"请输入序号N"<<endl;
        //L.top=-1; 这里不能马上就把top-1;你都不知道删除的数据是否成功
        int n;
        cin>>n;
        //判断n和L长度的大小,不然我输入一个11,长度才10不就出问题了吗。
        if(n>L.length){
            cout<<"输入的数字超过链表长度"<<endl;
            return  -1;
        }
    
        //for(int i=0; i<L.length; i++)
            //if(n=i+1)
            //{
               // a[i]=a[i+1];//使用结构体中的数组,而不是另外定义一个!!
               // L.length--;
           // }
    
        //删除第几个应该是吧那个数删除掉,然后把后面的数据往前面移动
        for (int i=n-1;i<L.length-1;i++){
            //数组下标从0开始,所以删除
            L.a[i]=L.a[i+1];
        }
        L.length--;
        L.top--;
        return 0;
    }
    void display(list L)
    {
        cout<<"此时数组中还剩下的元素是:"<<endl;
        for(int i=0; i<L.length; i++)
            cout<<L.a[i]<<endl;
    }
    
    int main()
    {
        list L1=InitList_Sq();
        Creatlist(L1);
        deletelist(L1);
        display(L1);
        return 0;
    }
    

    简单的改了一些,仅供参考

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

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效