Listシーケンステーブル行列、スタック、辞書.
70118 ワード
基礎知識
シーケンステーブルは配列です!!!ただし配列が制限されているシーケンステーブルはメモリアドレスが連続しており、シーケンステーブルはクエリーが便利で追加遍歴は削除や挿入に適していないため、頻繁に付与操作を行うためシーケンステーブルに長さ制限がある
チェーンヘッダ挿入法
チェーンテーブルは1つのノードから構成され、ノードの中には2つの要素dataノードの次のアドレスがノードになっている.NextがNullの場合はチェーンテーブルからテールチェーンテーブルまで長さ制限のないチェーンテーブルですのでチェーンを切らないように注意してください
チェーンテーブルを追加しても削除しても誰を見つけなければなりませんか?操作する前の要素チェーンテーブルは筆記試験で大きな割合を占めています.チェーンテーブルは単純にチェーンテーブルより2種類に分けられます.1つのデータを逆置きしてヘッダに挿入する方式exp index=0チェーンテーブルデータと入力データを一致させるにはテール挿入法exp index=lengthシーケンステーブルでスペースを節約し、チェーンテーブルはスペースを浪費する(より良い利用空間)
スタックとキューは特殊な線形テーブル(制限された線形テーブル)シーケンススタックシーケンスキュープロトタイプ順テーブルスタックチェーンキュープロトタイプはチェーンテーブルです
ちくじひょう
MyListクラス
プライマリクラス
チェーンテーブル
LinkListクラス
スタック
スタック:stack先進後出圧スタック:push出スタック:pop取得スタックトップ:peek判断有無:cont***
キュー:Queue先進先入隊:Enqueue出隊:Dequeue戻りキューヘッダ:Peek
辞書
辞書を巡る方法(1)KeyValuePair foreach(KeyValuePair pair in dic)(2)Dictionary.Values foreach (int value in dic.Values) (3)Dictionary.Keys foreach (string key in dic.Keys)
シーケンステーブルは配列です!!!ただし配列が制限されているシーケンステーブルはメモリアドレスが連続しており、シーケンステーブルはクエリーが便利で追加遍歴は削除や挿入に適していないため、頻繁に付与操作を行うためシーケンステーブルに長さ制限がある
チェーンヘッダ挿入法
チェーンテーブルは1つのノードから構成され、ノードの中には2つの要素dataノードの次のアドレスがノードになっている.NextがNullの場合はチェーンテーブルからテールチェーンテーブルまで長さ制限のないチェーンテーブルですのでチェーンを切らないように注意してください
チェーンテーブルを追加しても削除しても誰を見つけなければなりませんか?操作する前の要素チェーンテーブルは筆記試験で大きな割合を占めています.チェーンテーブルは単純にチェーンテーブルより2種類に分けられます.1つのデータを逆置きしてヘッダに挿入する方式exp index=0チェーンテーブルデータと入力データを一致させるにはテール挿入法exp index=lengthシーケンステーブルでスペースを節約し、チェーンテーブルはスペースを浪費する(より良い利用空間)
スタックとキューは特殊な線形テーブル(制限された線形テーブル)シーケンススタックシーケンスキュープロトタイプ順テーブルスタックチェーンキュープロトタイプはチェーンテーブルです
ちくじひょう
MyListクラス
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyList
{
//
class MySeqList<T>
{
private int _flag;//
private T[] _ints;// ,
public MySeqList()// ,
{
_ints = new T[30];
_flag = 0;
}
public MySeqList(int count)//
{
_ints = new T[count];
_flag = 0;
}
//
public void AddItem(T Item)
{
if (_flag >= _ints.Length)
{
Console.WriteLine(" ");
return;
}
_ints[_flag] = Item;
_flag++;
}
//
public T RemoveAt(int index)
{
T returnValue = default(T);
if (index<0||index>=_flag)
{
Console.WriteLine(" ");
goto returnTip;
}
returnValue = _ints[index];
for (int i = index; i < _flag-1; i++)
{
_ints[i] = _ints[i + 1];
}
_flag--;
returnTip:
return returnValue;
}
// , -1
public void Remove(T removeItem)
{
int tmpIndex = -1;
for (int i = 0; i < _flag; i++)
{
if (_ints[i].Equals(removeItem))
{
tmpIndex = i;
break;
}
}
if (tmpIndex != -1)
{
RemoveAt(tmpIndex);
}
}
//
public int IndexOf(T Item)
{
int returnValue = -1;
for (int i = 0; i < _flag; i++)
{
if (_ints[i].Equals(Item))
{
returnValue = i;
break;
}
}
return returnValue;
}
//
public void Insert(int index,T Item)
{
if (_flag>=_ints.Length)
{
Console.WriteLine(" ");
return;
}
if (index > _flag || index < 0)
{
Console.WriteLine(" ");
return;
}
for (int i = _flag; i >index; i--)
{
_ints[i] = _ints[i - 1];
}
_ints[index] = Item;
_flag++;
}
//
public void ShowItem(Action<T> ac)
{
for (int i = 0; i < _flag; i++)
{
ac(_ints[i]);
}
}
//
public void Clear()
{
_flag = 0;
}
//
public void Reverse()
{
T n;
for (int i = 0; i < _flag/2; i++)
{
n = _ints[i];
_ints[i] = _ints[_flag - 1-i];
_ints[_flag - 1-i] = n;
}
}
}
}
プライマリクラス
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyList
{
class MyClass
{
public string Name;
public MyClass(int i)
{
Name = "zhangsan\t" + i;
}
}
class Program
{
static void show(MyClass my)
{
Console.WriteLine(my.Name);
}
static void Main(string[] args)
{
MySeqList<MyClass> intList = new MySeqList<MyClass>();
intList.AddItem(new MyClass(1));
intList.AddItem(new MyClass(2));
intList.AddItem(new MyClass(3));
intList.AddItem(new MyClass(4));
intList.AddItem(new MyClass(5));
intList.ShowItem(show);
intList.Reverse();
intList.ShowItem(show);
//intList.ShowItem(show);
Console.ReadLine();
}
}
}
チェーンテーブル
LinkListクラス
using System; namespace { // public class LinkList { private Node _head; private int _count; public LinkList() { //new _head.next --> null head.data = 0 _head = new Node(); _count = 0; } public void AddItem(Node newNode) { // Node tmpNode = _head; // while (tmpNode.Next != null) { // tmpNode = tmpNode.Next; } // tmpNode.Next = newNode; // ++ _count++; } public int GetLength() { return _count; } public void Insert(int index, Node newNode) { //0 if (index < 0 || index > _count) { Console.WriteLine("Over"); return; } Node tmpNode = _head; for (int i = 0; i < index; i++) { tmpNode = tmpNode.Next; } //tmpNode? index newNode.Next = tmpNode.Next; tmpNode.Next = newNode; _count++; //0~l-1 // l } ///
/// index value /// /// public void ShowItem(Action<int,int> ac) { if (_count == 0) { Console.WriteLine(" "); return; } Node tmNode = _head.Next; for (int i = 0; i < _count; i++) { ac(i, tmNode.Data); // tmNode = tmNode.Next; } } public int RemoveAt(int index) { // data int returnValue = default(int); // if (index < 0 || index >=_count) { Console.WriteLine("error"); goto returnTip; } // Node tmpNode = _head; // for (int i = 0; i < index; i++) { tmpNode = tmpNode.Next; } // Node deleteNode = tmpNode.Next; // tmpNode.Next = tmpNode.Next.Next; // deleteNode.Next = null; // -- _count--; // data returnValue = deleteNode.Data; returnTip: return returnValue; } public void Clear() { _head.Next = null; _count = 0; } public void Reverse()// { Node T1, T2;// T2 = _head.Next;//T2= , _head.Next = null;// . while (T2!=null)// { T1 = T2.Next;// T1 T2 T2.Next = _head.Next;// T2 , , _head.Next = T2;// T2 = T1;// . } } public int RemoveMin()// { // , Node DelePreMin, DeleMin, preMin, min; DelePreMin = preMin = _head;// DeleMin = min = _head.Next;// while (min!=null)// { if (DeleMin.Date>min.Date)// { DelePreMin = preMin;// DeleMin = min;// , } preMin = preMin.Next;// min = min.Next; } DelePreMin.Next = DelePreMin.Next.Next;// DeleMin.Next = null; _count--; return DeleMin.Date; } } }
Node类
namespace { public class Node { public int Data; // public Node Next; ///
/// /// public Node() { Data = default(int); Next = null; } public Node(int value) { Data = value; Next = null; } } }
主类
using System;
namespace
{
internal class Program
{
public static void Show(int index, int value)
{
Console.WriteLine(" {0} {1}",index+1,value);
}
public static void Main(string[] args)
{
LinkList linkList = new LinkList();
linkList.AddItem(new Node(1));
linkList.AddItem(new Node(2));
linkList.AddItem(new Node(3));
linkList.AddItem(new Node(4));
linkList.AddItem(new Node(5));
linkList.Insert(1,new Node(1000));
//1 1000 2 3 4 5
linkList.Clear();
linkList.Reverse();
linkList.RemoveMin();
Console.WriteLine(linkList.RemoveAt(1));
Console.WriteLine(linkList.GetLength());
linkList.ShowItem(Show);
}
}
}
スタック
スタック:stack
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace
{
class Program
{
static void Main(string[] args)
{
Stack<int> stack = new Stack<int>();
//
stack.Push(10);
stack.Push(20);
stack.Push(30);
stack.Push(40);
stack.Push(50);
stack.Push(60);
stack.Push(70);
stack.Push(80);
stack.Push(90);
stack.Push(100);
stack.Push(110);
//Console.WriteLine(stack.Pop());
;
//
int[] ints= stack.ToArray();
Console.WriteLine(ints[0]);
}
}
}
キュー:Queue
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace
{
class Program
{
static void Main(string[] args)
{
List<int> list = new List<int>();
Queue<int> queue = new Queue<int>();
queue.Enqueue(10);
queue.Enqueue(20);
queue.Enqueue(30);
queue.Enqueue(40);
queue.Enqueue(50);
queue.Enqueue(60);
queue.Enqueue(70);
Console.WriteLine(queue.Dequeue());
}
}
}
辞書
辞書を巡る方法(1)KeyValuePair foreach(KeyValuePair pair in dic)(2)Dictionary.Values foreach (int value in dic.Values) (3)Dictionary.Keys foreach (string key in dic.Keys)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace
{
class Program
{
static void Main(string[] args)
{
// //string string
// //name age
// //fenshuA fenshuB
// //GameObj Comm
// Dictionary userDictionary = new Dictionary();
// userDictionary.Add("zhangsan","1324");
// //userDictionary.Add("zhangsan","1324");
Console.WriteLine(userDictionary.Remove("lixi"));
// //userDictionary.ContainsKey()
// ;
// foreach (var v in userDictionary)
// {
// Console.WriteLine(v.Key);
// Console.WriteLine(v.Value);
// }
// Console.WriteLine("=========================================");
// userDictionary["zhangsan"] = "zhangsangfeng";
// Console.WriteLine(userDictionary["zhangsan"]);
// //foreach (var v in userDictionary)
// //{
// // Console.WriteLine(v.Key);
// // Console.WriteLine(v.Value);
// //}
// !!!
List<int> list = new List<int>();
list.Add(10);//
list.AddRange(new int[]{1,2,3,4,5,6,7,8,9,0}); //
list.Remove(10000); //
}
}
}