Time of Update: 2017-02-27
為了表示每個資料元素ai與其直接後繼元素ai+1之間的邏輯關係,對資料ai,除了儲存其自身的資訊之外,還需儲存一 個指示其直接後繼的資訊(即直接後繼的儲存位置)。這兩部分資訊組成資料元素ai的儲存映像,稱為結點(Node)。N個 結點鏈結成一個鏈表,即為線性表(a1,a2,...,an)的鏈式儲存結構,因為此鏈表的每個節點中只包含一個指標域,所以叫 做單鏈表。我們把鏈表中的第一個結點的儲存位置叫做頭指標,,為了更方便地對鏈表進行操作,如刪除第一個結
Time of Update: 2017-02-27
首先我們讓數組的元素都是由兩個資料域組成,data和cur。也就是說,數組的每一個下標都對應一個data和一個cur。資料域data用來存放資料元素,也就是通常我們要處理的資料;而遊標cur相當於單鏈表中的next指標,存放該元素的後繼在數組中的下標。我們把這種用數組描述的鏈表叫做靜態鏈表。數組的第一個元素,即下標為0的元素的cur就存放備用鏈表的第一個結點的下標;而數組的最後一個元素的cur則存放第一個有數值的元素的下標,相當於單鏈表的前端節點作用,當整個鏈表為空白時,則為0,表示無指向。如圖
Time of Update: 2017-02-27
Delphi的出現將一大批程式員帶入了Windows下的可視化編程,為一些C&C++的死黨程式員所羨慕、感歎。直到C++Builder的出現這些Programer才用到了夢寐以求的編程工具,也將一些不得已"投敵"到Delphi下的程式員又拉回到C++的懷抱。她正真將Windows下的可視化編程和物件導向程式設計語言有機的融合在一起。但是由於C++Builder面市時間較短固而可用的控制項不多,而且控制項的使用也只針對某一版本,相互之間的可互用性不好,除非你有Sourc
Time of Update: 2017-02-27
Borland C++ Builder 對 C++ 進行了擴充,也可以象 Delphi 中一樣自訂類屬性。 對於簡單類型的屬性,可以如下定義:class TSome{protected:int a;int b;int s;int GetSum(void){ return s = a + b ; }void SetSum(int s){ this->s = s ; }public://...其它代碼__property int sum={read=GetSum,write=SetSum};/
Time of Update: 2017-02-27
把"2007-11-4"這種數字日期轉換為"二〇〇七年十一月四號"這種中文日期。using System;using System.Text;using System.Text.RegularExpressions;namespace AndyDateConvert { class DateConvert { private static DateConvert m_DateConvert = null; private char[
Time of Update: 2017-02-27
/** Copyright (c) 2006,四川師範大學* All rights reserved.* 檔案名稱:GetIpAndName* 檔案標識:見組態管理計劃書* 檔案摘要:得到本地主機的名字與IP*/using System;using System.Net;/** 目前的版本:1.0* 軟體作者:安美洪* 完成日期:2006年3月28日** 取代版本:無* 原作者 :無* 完成日期:無*/namespace GetIpAndName{class Class1{[STAThread]
Time of Update: 2017-02-27
學習C#反射命名空間之前我們來看看C#反射的概念,反射是一個運行庫類型探索的過 程。 通過反射可以得到一個給定程式集所包含的所有類型的列表,這個列表包括給定類 型中定義的方法、欄位、屬性和事件。也可以動態發現一組給定類支援的借口、方法的 參數和其他相關資訊如基類、命名空間、資料清單等。C#反射命名空間詳細介紹:1.System.Reflection命名空間內的各類型(1) Assembly通過它可以載入、瞭解和操縱一個程式集(2) AssemblyName
Time of Update: 2017-02-27
//十進位轉二進位Console.WriteLine("十進位166的二進位表示: "+Convert.ToString(166, 2));//十進位轉八進位Console.WriteLine("十進位166的八進位表示: "+Convert.ToString(166, 8));//十進位轉十六進位Console.WriteLine("十進位166的十六進位表示: "+Convert.ToString(166,
Time of Update: 2017-02-27
1 建立用於反射使用的DLL建立一個C#類庫項目,拷貝原始碼如下,編譯產生DLL(假如DLL的檔案名稱是TestReflect.dll)1using System;23namespace Webtest4{5 /**//// <summary>6 /// ReflectTest 的摘要說明。7 /// </summary>8 public class ReflectTest9 {10 public ReflectTest()11 {}1213 public string
Time of Update: 2017-02-27
4.13 初始化泛型變數為它們的預設值問題您的泛型類包含一個變數,它的類型和類中定義的型別參數一樣。在構造泛型類時,您希望這個變數被初始化為它的預設值。解決方案簡單地使用default關鍵字把變數初始化為它的預設值:public class DefaultValueExample<T> { T data = default(T); public bool IsDefaultData() { T temp = default(T); if
Time of Update: 2017-02-27
4.11 在泛型字典類中使用foreach問題您希望在實現了System. Collections.Generic.IDictionary介面的類型枚舉元素,如System.Collections.Generic.Dictionary 或 System.Collections.Generic.SortedList。解決方案最簡單的方法是在foreach迴圈中使用KeyValuePair結構體:// 建立字典對象並填充. Dictionary<int, string>
Time of Update: 2017-02-27
4.9 使用泛型建立唯讀集合問題您希望類中的一個集合裡的資訊可以被外界訪問,但不希望使用者改變這個集合。解決方案使用ReadOnlyCollection<T>封裝就很容易實現唯讀集合類。例子如,Lottery類包含了中獎號碼,它可以被訪問,但不允許被改變:public class Lottery { // 建立一個列表. List<int> _numbers = null; public Lottery() { // 初始化內部列表
Time of Update: 2017-02-27
4.3 擷取泛型的類型問題您需要在運行時獲得一個泛型型別執行個體的Type對象。解決方案在使用typeof操作符時提供型別參數;使用型別參數執行個體化的泛型型別,用GetType()方法。聲明一個一般類型和一個泛型型別如下:public class Simple{ public Simple() { }}public class SimpleGeneric<T>{ public
Time of Update: 2017-02-27
快速排序的基本思想是基於分治策略的。對於輸入的子序列ap..ar,如果規模足夠小則直接進行排序,否則分三步處理:分解(Divide):將輸入的序列ap..ar劃分成兩個非空子序列ap..aq和aq+1..ar,使ap..aq中任一元素的值不大於aq+1..ar中任一元素的值。遞迴求解(Conquer):通過遞迴對p..aq和aq+1..ar進行排序。合并(Merge):由於對分解出的兩個子序列的排序是就地進行的,所以在ap..aq和aq+1..ar都排好序後不需要執行任何計算ap..ar就已排好
Time of Update: 2017-02-27
namespace Observer{//定義一個委託,這裡定義了觀察者方法的簽名,就是一個協議吧public delegate void NumberEventHandler(object sender,NumberEventArgs e);//要傳遞哪些參數到觀察者?在這裡定義,注意,要繼承自EventArgspublic class NumberEventArgs : EventArgs{ public NumberEventArgs(int number) { _number =
Time of Update: 2017-02-27
這裡的寫法,可以避免使用 for 迴圈,減少棧空間記憶體的使用和減少運行時的計算開銷!#include <iostream>#include <string>using namespace std;void print_char(char* array[]);//函數原形聲明void main(void){ char*
Time of Update: 2017-02-27
static 是C++中很常用的修飾符,它被用來控制變數的儲存方式和可見度,下面我將從 static 修飾符的產生原因、作用談起,全面分析static 修飾符的實質。static 的兩大作用:一、控制儲存方式:static被引入以告知編譯器,將變數儲存在程式的靜態儲存區而非棧上空間。1、引出原因:函數內部定義的變數,在程式執行到它的定義處時,編譯器為它在棧上分配空間,大家知道,函數在棧上分配的空間在此函數執行結束時會釋放掉,這樣就產生了一個問題:
Time of Update: 2017-02-27
為相應的控制項添加相應的事件響應代碼,完整代碼如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;namespace Web瀏覽器{public partial class Form1 :
Time of Update: 2017-02-27
//選擇排序class SelectionSorter{ private int min; public void Sort(int[] arr) { for (int i = 0; i < arr.Length - 1; ++i) { min = i; for (int j = i + 1; j < arr.Length; ++j) { if (arr[j] < arr[min]) min =
Time of Update: 2017-02-27
public static string CVT(string str) { if (str.CompareTo("吖") < 0) { string s=str.Substring(0,1).ToUpper(); if (char.IsNumber(s, 0)) { return "0"; } else {