问题描述
- 【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输出