线性表-【C#数据结构】为什么输出的是object[] Array ,而不是输出1 2 3 4

问题描述

【C#数据结构】为什么输出的是object[] Array ,而不是输出1 2 3 4

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test.SeqList
{
class SeqList
{
private int maxsize; //顺序表的最大容量

    public int Maxsize
    {
        get { return maxsize; }
        set { maxsize = value; }
    }
    public  object[] data;
    private int length;  //顺序表的实际长度

    public int Length
    {
        get { return length; }
        set { length = value; }
    }

    //初始化线性表
    public SeqList(int size)
    {
        maxsize = size;
        data = new object[maxsize];
        length = 0;
    }

    //判断顺序表是否满
    public bool IsFull()
    {
        if (length == maxsize)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    //在顺序表的末尾追加数据元素
    public object[]  InsertNode(object a)
    {
        //if (IsFull())
        //{
        //    Console.WriteLine("列表为空");

        //}

        data[length] = a;
        length++;
        return data;
    }

    //在顺序表的第i个数据元素的位置插入一个数据元素
    public object[]  InsertNode(object a, int i)
    {
        if (IsFull())
        {
            Console.WriteLine("列表为空");

        }

        if (i < 1 || i > length + 1)
        {
            Console.WriteLine("位置错误");

        }
        else
        {
            for (int j = length - 1; j >= i - 1; j--)
            {
                data[j + 1] = data[j];
            }
            data[i - 1] = a;
        }

        length++;

        return data;
    }

    //判断顺序表是否为空
    public bool IsEmpty()
    {
        if (length == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    //删除顺序表的第i个数据元素
    public void DeleteNode(int i)
    {
        if (IsEmpty())
        {
            Console.WriteLine("列表为空");
            return;
        }

        if (i < 1 || i > length)
        {
            Console.WriteLine("位置错误");
            return;
        }

        for (int j = i; j < length; j++)
        {
            data[j - 1] = data[j];
        }
        length--;
    }

    //获得数据表的第i个数据元素
    public object[] SearchNode(int i)
    {
        if (IsEmpty() || (i < 1) || (i > length))
        {
            Console.WriteLine("列表为空或位置错误");

        }
        return (object[])data[i - 1];
    }

    //在顺序表中查找值为value的数据元素
    public object[] SearchNode(object value)
    {
        if (IsEmpty())
        {
            Console.WriteLine("列表为空");

        }

        int i = 0;
        for (i = 0; i < length; i++)
        {
            if (data[i].ToString().Contains(value.ToString()))
            {
                break;
            }
        }

        if (i >= length)
        {

        }
        return (object[])data[i];
    }

    //求顺序表的长度
    public int GetLength()
    {
        return length;
    }

    //清空顺序表
    public void Clear()
    {
        length = 0;
    }

}

}

using System;
namespace Test.SeqList
{
interface ILinarList
{
void Clear();
void DeleteNode(int i);
int GetLength();
object[] InsertNode(object a, int i);
object[] InsertNode(object a);
bool IsEmpty();
bool IsFull();
object[] SearchNode(object value);
object[] SearchNode(int i);
}
}

解决方案

我没看到你的输出,
不过数组显示的时候得一个一个元素输出,不能整体输出

解决方案二:

看你的结果感觉你直接打印了一个数组变量

解决方案三:

不是直接打印数组变量,我自己写是要将数组的元素显示出来,可是,显示的结果就变成这样
这个是书上写的代码,我直接抄进去的,书上的有错,我就改了,这个程序有错我发个比较完整的
书上的错误我找了很久,怎么改都不能正确输出

```using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSharp.SeqList
{
class SeqList : CSharp.SeqList.ILinarList
{
private int maxsize; //顺序表的最大容量

    public int Maxsize
    {
        get { return maxsize; }
        set { maxsize = value; }
    }
    private T[] data;    //数组,用于存储数据表中的数据元素
    private int length;  //顺序表的实际长度

    public int Length
    {
        get { return length; }
        set { length = value; }
    }

    //初始化线性表
    public SeqList(int size)
    {
        maxsize = size;
        data = new T[maxsize];
        length = 0;
    }

    //判断顺序表是否满
    public bool IsFull()
    {
        if (length == maxsize)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    //在顺序表的末尾追加数据元素
    public void  InsertNode(T a)
    {
        if (IsFull())
        {
            Console.WriteLine("列表为空");
            return;
        }

        data[length] = a;
        length++;
        return data;
    }

    //在顺序表的第i个数据元素的位置插入一个数据元素
    public void InsertNode(T a, int i)
    {
        if (IsFull())
        {
            Console.WriteLine("列表为空");
            return;
        }

        if (i < 1 || i > length + 1)
        {
            Console.WriteLine("位置错误");
            return;
        }
        else
        {
            for (int j = length - 1; j >= i - 1; j--)
            {
                data[j + 1] = data[j];
            }
            data[i - 1] = a;
        }

        length++;
        return data;
    }

    //判断顺序表是否为空
    public bool IsEmpty()
    {
        if (length == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    //删除顺序表的第i个数据元素
    public void DeleteNode(int i)
    {
        if (IsEmpty())
        {
            Console.WriteLine("列表为空");
            return;
        }

        if (i < 1 || i > length)
        {
            Console.WriteLine("位置错误");
            return;
        }

        for (int j = i; j < length; j++)
        {
            data[j - 1] = data[j];
        }
        length--;
    }

    //获得数据表的第i个数据元素
    public T SearchNode(int i)
    {
        if (IsEmpty() || (i < 1) || (i > length))
        {
            Console.WriteLine("列表为空或位置错误");
            return default(T);
        }
        return data[i - 1];
    }

    //在顺序表中查找值为value的数据元素
    public T SearchNode(T value)
    {
        if (IsEmpty())
        {
            Console.WriteLine("列表为空");
            return default(T);
        }

        int i = 0;
        for (i = 0; i < length; i++)
        {
            if (data[i].ToString().Contains(value.ToString()))
            {
                break;
            }
        }

        if (i >= length)
        {
            return default(T);
        }
        return data[i];
    }

    //求顺序表的长度
    public int GetLength()
    {
        return length;
    }

    //清空顺序表
    public void Clear()
    {
        length = 0;
    }

}

}

using System;
namespace CSharp.SeqList
{
interface ILinarList
{
void Clear();
void DeleteNode(int i);
int GetLength();
void InsertNode(T a, int i);
void InsertNode(T a);
bool IsEmpty();
bool IsFull();
T SearchNode(T val);
T SearchNode(int i);
}
}

SeqList sqlt;

    //添加
    private void btn_Add_Click(object sender, EventArgs e)
    {
        //获取文本框
        string textAdd = txt_Add.Text.Trim();
        //返回添加的数

        //显示
        lit_showData.Items.Add(sqlt.InsertNode(textAdd));
    }

我想要实现一个具有添加 删除 查询 修改 该线性表的功能的,书上的错误非常多,我改了许多次都不行



解决方案四:

 按照你第一次所写的
InsertNode返回一个数组,
然后执行lit_showData.Items.Add(sqlt.InsertNode(textAdd));
这句不能这样写,
可以先
Object[] tmp = sqlt.InsertNode(textAdd);
然后将tmp的元素组合成字符串str
最后lit_showData.Items.Add(str);

解决方案五:

1,2,3,4,5输出

时间: 2024-08-25 10:20:26

线性表-【C#数据结构】为什么输出的是object[] Array ,而不是输出1 2 3 4的相关文章

顺序存储线性表-关于数据结构顺序表的应用

问题描述 关于数据结构顺序表的应用 设计一个通讯录,用顺序存储结构进行存储,设计出生成线性表,在第I个结点位置插入结点,删除第I个结点,打印表中结点的算法

数据结构C语言实现之线性表

#include <stdio.h>#include <stdlib.h>typedef int elemType; /************************************************************************//* 以下是关于线性表顺序存储操作的16种算法 *//************************************************************************/struct Lis

大话数据结构四:线性表的链式存储结构(单向循环链表)

1. 单向循环链表:将单链表尾结点的指针端由空指针改为指向头结点,使整个单链表形成一个环,这种头尾相接的单链表称为单向循环链表.   2. 单向循环链表和单链表实现的区别: 1.)添加一个结点到单向循环链表末尾时,必须使其最后一个结点的指针指向表头结点,而不是象单链表那样置为null. 2.)判断是否到达表尾时,单向循环链表可以判断该结点是否指向头结点,单链表只需要知道是否为null.   3.Java实现单向循环链表: // 单向循环链表 public class CircularLinked

大话数据结构二:线性表的链式存储结构(单链表)

1. 线性表的链式存储结构:指的是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的,这就意味着这些数据元素可以存在内存未被占用的任意位置. 2. 结点:结点由存放数据元素的数据域和存放后继结点地址的指针域组成. 1.)顺序存储结构中,每个数据元素只需要存数据元素的信息就可以了. 2.)链式存储结构中,除了要存储数据元素信息外,还要存储它的后继元素的存储地址. 3.)链表中第一个结点叫头结点,它的存储位置叫做头指针,它的数据域可以不存储任何信息,链表的最后一个结

软考之路--数据结构之线性表

        数据就是数值,也就是我们通过观察.实验或计算得出的结果.数据有很多种,最简单的就是数字.数据也可以是文字.图像.声音等.数据可以用于科学研究.设计.查证等.结构,组成整体的各部分的搭配和安排,两者完美结合在一起,我们这样需要重新认识她,对她重新审视与定义:数据结构是程序设计的重要理论和技术基础,她所讨论的内容和技术,对从事软件项目的开发有重要作用,通过学习数据结构,我们学会从问题出发,分析和研究计算机加工的数据的特性,以便为应用所设计的数据悬着适当的逻辑结构.存储结构及其相应的操

【Java数据结构】线性表

线性表 线性表是最基本.最简单.也是最常用的一种数据结构. 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部.比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储),但是把最后一个数据元素的尾指针指向了哨位结点).  我们说"线性"和"非线性",只在逻辑层次上讨论,而不考虑存储层次,所以双向链表和循环链表依旧是线性表. 在数据结构逻辑层次上细分,线性表可分为

数据结构的C++实现之线性表之顺序存储结构

线性表的数据对象集合为 {a1,a2,....an},每个元素的类型均为Datatype.其中,除第一个元素a1外,每一个元素有且 只有一个直接前驱元素,除了最后一个元素an外,每一个元素有且只有一个直接后继元素.数据元素之间的关系是一对一的 关系. 线性表的顺序存储结构的优缺点: 优点:无须为表示表中元素之间的逻辑关系而增加额外的存储空间:可以快速地存取表中任一位置的元素O(1) 缺 点:插入和删除操作需要移动大量元素O(n):当线性表长度变化较大时,难以确定存储空间的容量:造成存储空间的"碎

关于数据结构(c语言版)线性表的问题

问题描述 关于数据结构(c语言版)线性表的问题 写完线性表实验代码后,有些错误 不会调试 求大神帮帮忙! ps.错误截图:图片说明 代码: #include #include #include #define LIST_INIT_SIZE 100 //线性表存储空间的初始分量 #define LISTINCREMENT 10 //线性表存储空间的分配增量 typedef struct{ ElemType* elem; //存储空间基址 int length; //当前长度 int listsiz

(C语言版)数据结构线性表从键盘输入元素实现相关功能,不报错,但执行意外终止

问题描述 (C语言版)数据结构线性表从键盘输入元素实现相关功能,不报错,但执行意外终止 #include #include #define MaxSize 50 typedef char ElemType; typedef struct{//struct结构体 ElemType data[MaxSize]; int length; }SqList; void InitList(SqList &L)//初始化线性表的方法,&是取地址符号,是定义指针符号,如int *b=&a:*a=4