数据结构代码,要有注释,急用,下面几个题目选一个做

1:线性表基本操作
要求:需要实现的线性表操作任务:
(1):求线性表长度
(2):判断线性表是否为空
(3):线性表插入操作
(4):线性表删除操作
(5):线性表遍历操作
(6):线性表按值查找
(7):线性表按位置查找
子任务:线性表顺序存储及实现
子任务:线性表链式存储及实现
2:线性表应用
子任务:利用线性表实现一元多项式的表示与相加
子任务:利用线性表实现约瑟夫环问题
3:栈基本操作
要求:需要实现的栈操作任务:
(1):求栈长度
(2):判断栈是否为空
(3):栈插入操作
(4):栈删除操作
(5):栈遍历操作
(6):栈按值查找
(7):栈按位置查找
子任务:栈顺序存储及实现
子任务:栈链式存储及实现
4:栈应用
子任务:利用栈实现数制转换
子任务:利用栈实现括号匹配的检验
子任务:利用栈实现简单表达式求值
5:队列基本操作
要求:需要实现的栈操作任务:
(1):求队列长度
(2):判断队列是否为空
(3):队列插入操作
(4):队列删除操作
(5):队列遍历操作
(6):队列按值查找
(7):队列按位置查找
子任务:队列顺序存储及实现
子任务:队列链式存储及实现
5:队列应用
子任务:利用队列实现舞伴问题
子任务:利用队列实现键盘输入循环缓冲区问题

线性表基本操作,我用C#实现的,顺序和链式两种存储方式都有实现

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

namespace Linear
{
class LinearList
{
}

/// <summary>
/// 顺序表
/// </summary>
/// <typeparam name="T"></typeparam>
public class MySequenceList<T>
{
private T[] m_array;
private int m_maxSize;
private int m_length;

public MySequenceList(int maxSize)
{
InitList(maxSize);
}

/// <summary>
/// 初期化
/// </summary>
/// <param name="size"></param>
private void InitList(int size)
{
m_array = new T[size];
m_maxSize = size;
m_length = 0;
}

/// <summary>
/// 查找元素e在线性表中的位置
/// </summary>
/// <param name="e">元素e</param>
/// <returns>找到返回位置,找不到返回-1</returns>
public int Search(T e)
{
for (int i = 0; i < m_length; i++)
{
if (m_array[i].Equals(e))
return i + 1;
}
return -1;
}

/// <summary>
/// 在第i个元素的位置,插入e;
/// </summary>
/// <param name="i">插入位置</param>
/// <param name="e">元素e</param>
/// <returns>是否成功</returns>
public bool Insert(int i,T e)
{
if (m_length == m_maxSize)
return false;

if (i < 1 || i > m_length+1)
return false;

for (int j = m_length - 1; j >= i-1; j--)
{
m_array[j + 1] = m_array[j];
}
m_array[i-1] = e;
m_length++;

return true;
}

/// <summary>
/// 删除表中第i个元素
/// </summary>
/// <param name="i">元素位置</param>
/// <returns>是否成功</returns>
public bool Delete(int i)
{
if (m_length == 0)
return false;

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

return true;
}

/// <summary>
/// 修改表元素
/// </summary>
/// <param name="i">修改元素的位置</param>
/// <param name="e">修改的值</param>
/// <returns>是否成功</returns>
public bool Modify(int i, T e)
{
if (i < 1 || i > m_length)
return false;

m_array[i - 1] = e;

return true;
}

/// <summary>
/// 返回第i个元素的值
/// </summary>
/// <param name="i">元素的位置</param>
/// <param name="e">返回的值</param>
/// <returns>是否成功</returns>
public bool GetByIndex(int i, ref T e)
{
if (i < 1 || i > m_length)
return false;

e = m_array[i - 1];

return true;
}

}

/// <summary>
/// 带头结点的链表
/// </summary>
/// <typeparam name="T"></typeparam>
public class MyLinkedList<T>
{
/// <summary>
/// 头结点
/// </summary>
private Node<T> m_head;

/// <summary>
/// 链表长度
/// </summary>
private int m_length;

public MyLinkedList()
{
Init();
}

private void Init()
{
m_head = new Node<T>();
m_head.next = null;
m_length = 0;
}

/// <summary>
/// 头插法生成链表
/// </summary>
/// <param name="arr">生成链表用的数组</param>
public void HeadCreate(T [] arr)
{
foreach (T data in arr)
{
Node<T> node = new Node<T>();
node.data = data;
node.next = m_head.next;

m_head.next = node;

m_length++;
}
}

/// <summary>
/// 尾插法生成链表
/// </summary>
/// <param name="arr">生成链表用的数组</param>
public void FootCreate(T[] arr)
{
Node<T> foot = m_head;
foreach (T data in arr)
{
Node<T> node = new Node<T>();
node.data = data;
node.next = foot.next;

foot.next = node;
foot = node;

m_length++;
}
}

/// <summary>
/// 在i位置处插入一个结点
/// </summary>
/// <param name="i"></param>
/// <param name="e">插入结点值</param>
/// <returns></returns>
public bool Insert(int i,T e)
{
if (i < 1 || i > m_length)
return false;

Node<T> node = new Node<T>();
node.data = e;

Node<T> temNode = m_head;
int j = 1;
while (j < i)
{
temNode = temNode.next;
j++;
}

node.next = temNode.next;
temNode.next = node;

m_length++;

return true;
}

/// <summary>
/// 删除一个结点
/// </summary>
/// <param name="i"></param>
/// <returns>是否成功</returns>
public bool Delete(int i)
{
if (i < 1 || i > m_length)
return false;

Node<T> temNode = m_head;
int j=1;
while (j<i)
{
temNode = temNode.next;
}
temNode.next = temNode.next.next;

return true;
}

/// <summary>
/// 修改第i个结点的值
/// </summary>
/// <returns></returns>
public bool Modify(int i, T e)
{
if (i < 1 || i > m_length)
return false;

Node<T> temNode = m_head;
int j = 1;
while (j <= i)
{
temNode = temNode.next;
}
temNode.data = e;
return true;
}

/// <summary>
/// 查找元素e在链表中的位置
/// </summary>
/// <param name="e"></param>
/// <returns></returns>
public int Search(T e)
{
Node<T> temNode = m_head;
int j = 1;
while (j <= m_length)
{
temNode = temNode.next;

if (temNode.data.Equals(e))
return j;
}
return -1;
}

/// <summary>
/// 删除所有重复结点
/// </summary>
public void DeleteALLSameData()
{
if (m_length == 0)
{
return;
}

Node<T> node1,node2;
node1 = m_head.next;

while (node1.next != null)
{
node2 = node1;
while (node2.next != null)
{
if (node1.data.Equals(node2.next.data))
{
node2.next = node2.next.next;
}
else
{
node2 = node2.next;
}
}
node1 = node1.next;
}
}

}

/// <summary>
/// 定义结点
/// </summary>
/// <typeparam name="T"></typeparam>
public class Node<T>
{
public T data;
public Node<T> next;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-23
请楼主注明要用什么语言实现?JAVA、C、C++?