using System;
using System.Collections.Generic;
using System.Text;
namespace List
{
struct orderList
{
public int[] data;
public int len ;
}
class OrderList
{
private orderList ol;
//初始化表
public OrderList()
{
ol.data = new int[50];
ol.data[0] = 0;
ol.data[1] = 1;
ol.data[2] = 2;
ol.data[3] = 3;
ol.len =4;
}
//求表长度
public int Length()
{
return ol.len;
}
//取表中元素
public int GetElem(int i)
{
return ol.data[i - 1];
}
//取元素的前驱
public int PriorElem(int x)
{
int i = 0;
while (ol.data[i] != x)
{
i++;
}
int pre_x = ol.data[i - 1];
return pre_x;
}
//取元素的后继
public int NextElem(int x)
{
int i = 0;
while (ol.data[i] != x)
{
i++;
}
int next_x = ol.data[i + 1];
return next_x;
}
//定位元素
public int LocateElem(int x)
{
int i = 0;
while (ol.data[i] != x)
{
i++;
if (i > ol.len)
{
Console.WriteLine("元素在线性表中不存在!");
break;
}
}
if (i > ol.len)
{
return 0;
}
else
return i + 1;
}
//插入元素
public bool ListInsert(int i ,int x)
{
int j;
if (i < 1 || i > ol.len)
{
Console.WriteLine("输入有误!");
return false;
}
for (j = ol.len; j >= i; j--)//将序号为i 的节点及之后的元素后移
ol.data[j] = ol.data[j - 1];
ol.data[i - 1] = x;
ol.len++;
Console.WriteLine("插入成功!");
return true;
}
//删除元素
public bool ListDelete(int i)
{
int j;
if (i < 1 || i > ol.len)
{
Console.WriteLine("输入有误!");
return false;
}
for (j = i; j < ol.len; j++)//将序号为i 的节点之后的元素前移
{
ol.data[j - 1] = ol.data[j];
}
ol.len--;
Console.WriteLine("删除成功!");
return true;
}
//输出线性表
public void PrintList()
{
int i;
for (i = 1; i <= ol.len; i++)
Console.WriteLine("ol.data[{0}]={1}",i-1,ol.data[i-1]);
}
}
class Program
{
static void Main(string[] args)
{
OrderList OrderListObject = new OrderList();
Console.WriteLine("线性表的长度是{0}" , OrderListObject.Length());
Console.WriteLine("取线性表的第1个元素{0}",OrderListObject.GetElem(1));
Console.WriteLine( OrderListObject.PriorElem(2));
Console.WriteLine(OrderListObject.NextElem(2));
Console.WriteLine(OrderListObject.ListInsert(1, 5));//插入元素
OrderListObject.PrintList();//输出元素
Console.WriteLine(OrderListObject.ListDelete(1));//删除元素
OrderListObject.PrintList();//输出元素
Console.ReadKey();
}
}
}