程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#數據結構-線性表(2)

C#數據結構-線性表(2)

編輯:關於C語言

2 實現

實現過程中,算法時間復雜度沒有做過多的考慮和計算,有興趣的朋友可以完成

Code

[copy to clipboard]

CODE:

1/**//// <summary>
 2  /// 線性表
 3  /// </summary>
 4  /// <typeparam name="T"></typeparam>
 5  public class SeqList<T> : IListDS<T>
 6  {
 7    private int maxsize; //順序表的容量
 8    private T[] data;  //數組,用於存儲順序表中的數據元素
 9    private int last;  //指示順序表最後一個元素的位置
10
11    //索引器
12    public T this[int index]
13    {
14      get
15      {
16        return data[index];
17      }
18      set
19      {
20        data[index] = value;
21      }
22    }
23
24    //最後一個數據元素的位置屬性
25    public int List
26    {
27      get
28      {
29        return last;
30      }
31    }
32
33    //容量屬性
34    public int MaxSize
35    {
36      get
37      {
38        return maxsize;
39
40      }
41      set
42      {
43        maxsize = value;
44      }
45    }
46
47    //構造函數
48    public SeqList(int size)
49    {
50      data = new T[size];
51      maxsize = size;
52      last = -1;
53    }
54    /**//// <summary>
55    /// 獲取長度
56    /// </summary>
57    /// <returns></returns>
58    public int GetLength()
59    {
60      return last + 1;
61    }
62
63    /**//// <summary>
64    /// 清空操作
65    /// </summary>
66    public void Clear()
67    {
68      last = -1;    
69    }
70
71
72    /**//// <summary>
73    /// 判斷線性表是否為空
74    /// </summary>
75    /// <returns></returns>
76    public bool IsEmpay()
77    {
78      if (last == -1)
79      {
80        return true;
81      }
82      else
83      {
84        return false;
85      }
86    }
87
88    /**//// <summary>
89    /// 判斷線性表是否已滿
90    /// </summary>
91    /// <returns></returns>
92    public bool IsFull()
93    {
94      if (last == maxsize - 1)
95      {
96        return true;
97      }
98      else
99      {
100        return false;
101      }
102    }
103
104    /**//// <summary>
105    /// 附加操作,線性表未滿,將值為item的新元素添加到末尾
106    /// </summary>
107    /// <param name="item"></param>
108   public void Append(T item)
109    {
110      if (IsFull())
111      {
112        Console.Write("list is full");
113        return;
114      }
115
116      data[++last] = item;
117    }
118
119    /**//// <summary>
120    /// 插入操作
121    /// </summary>
122    /// <param name="item"></param>
123    /// <param name="i"></param>
124    public void Insert(T item, int i)
125    {
126      if (IsFull())
127      {
128        Console.Write("List is full");
129        return;
130      }
131
132      if (i < 1 || i > last + 2)
133      {
134        Console.Write("Posotion is error");
135        return;
136      }
137
138      if (i == last + 2)
139      {
140        data[last + 1] = item;
141      }
142      else
143      {
144        for (int j = last; j >= i - 1; --j)
145        {
146          data[j + 1] = data[j];
147        }
148        data[i - 1] = item;
149      }
150      ++last;
151    }
152
153    /**//// <summary>
154    /// 刪除操作
155    /// </summary>
156    /// <param name="i"></param>
157    /// <returns></returns>
158    public T Delete(int i)
159    {
160      T t = default(T);
161      if (IsEmpay())
162      {
163        Console.Write("List is empty!");
164        return t;
165      }
166      if (i < 1 || i > last + 1)
167      {
168        Console.Write("Position is Error");
169        return t;
170      }
171      if (i == last + 1)
172      {
173        t = data[last--];
174
175      }
176      else
177      {
178        t = data[i - 1];
179        for (int j = i; j <= last; j++)
180        {
181          data[j] = data[j + 1];
182        }
183      }
184      --last;
185      return t;
186
187    }
188
189    /**//// <summary>
190    /// 取表元
191    /// </summary>
192    /// <param name="i"></param>
193    /// <returns></returns>
194    public T GetElem(int i)
195    {
196      T t = default(T);
197      if (IsEmpay())
198      {
199        Console.Write("List is Empty");
200        return t;
201      }
202
203      if (i < 1 || i > last + 1)
204      {
205        Console.Write("Position is error");
206        return t;
207      }
208      return data[i - 1];
209
210    }
211
212    /**//// <summary>
213    /// 按值查找
214    /// </summary>
215    /// <param name="value"></param>
216    /// <returns></returns>
217    public int Locate(T value)
218    {
219      if (IsEmpay())
220      {
221        Console.Write("List is empty");
222        return -1;
223      }
224
225      int i = 0;
226      for ( i = 0; i <= last; ++i)
227      {
228        if (value.Equals(data))
229        {
230          break;
231        }
232      }
233      if (i > last)
234      {
235        return -1;
236      }
237      return i;
238    }
239  }

以上代碼用C#實現了線性表的操作,具體的測試沒有做,有興趣的朋友,可以寫一個簡單的測試程序。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved