Home About us Products Services Contact us Bookmark
:: wikimiki.org ::
Æ•°æ®ç»“æž„

æ•°æ®ç»“æž„

算法+数æ®ç»“æž„ï¼ç¨‹åº
— 尼夿‹‰æ–¯Â·æ²ƒæ–¯
æ•°æ®ç»“构(Data Structure)是计算机存储ã€ç»„织数æ®çš„æ–¹å¼ã€‚通常情况下,精心选择的数æ®ç»“æž„å¯ä»¥å¸¦æ¥æ›´é«˜çš„è¿è¡Œæˆ–者存储效率的算法。数æ®ç»“构往往åŒé«˜æ•ˆçš„æ£€ç´¢ç®—法和索引技术有关。 在许多类型的程åºçš„设计中,数æ®ç»“构的选择是一个基本的设计考虑因素。许多大型系统的构造ç»éªŒè¡¨æ˜Žï¼Œç³»ç»Ÿå®žçŽ°çš„å›°éš¾ç¨‹åº¦å’Œç³»ç»Ÿæž„é€ çš„è´¨é‡éƒ½ä¸¥é‡çš„ä¾èµ–于是å¦é€‰æ‹©äº†æœ€ä¼˜çš„æ•°æ®ç»“构。许多时候,确定了数æ®ç»“æž„åŽï¼Œç®—法就容易得到了。有些时候事情也会å过æ¥ï¼Œæˆ‘们根æ®ç‰¹å®šç®—法æ¥é€‰æ‹©æ•°æ®ç»“构与之适应。ä¸è®ºå“ªç§æƒ…况,选择åˆé€‚的数æ®ç»“构都是éžå¸¸é‡è¦çš„。 选择了数æ®ç»“构,算法也éšä¹‹ç¡®å®šï¼Œæ˜¯æ•°æ®è€Œä¸æ˜¯ç®—æ³•æ˜¯ç³»ç»Ÿæž„é€ çš„å…³é”®å› ç´ ã€‚è¿™ç§æ´žè§å¯¼è‡´äº†è®¸å¤šç§è½¯ä»¶è®¾è®¡æ–¹æ³•和程åºè®¾è®¡è¯­è¨€çš„出现,é¢å‘对象的程åºè®¾è®¡è¯­è¨€å°±æ˜¯å…¶ä¸­ä¹‹ä¸€ã€‚ 在计算机科学中,数æ®ç»“æž„æ˜¯ä¸€é—¨ç ”ç©¶éžæ•°å€¼è®¡ç®—的程åºè®¾è®¡é—®é¢˜ä¸­è®¡ç®—机的æ“作对象(数æ®å…ƒç´ ï¼‰ä»¥åŠå®ƒä»¬ä¹‹é—´çš„关系和è¿ç®—等的学科,而且确ä¿ç»è¿‡è¿™äº›è¿ç®—åŽæ‰€å¾—到的新结构ä»ç„¶æ˜¯åŽŸæ¥çš„结构类型。 “数æ®ç»“æž„â€ä½œä¸ºä¸€é—¨ç‹¬ç«‹çš„课程在国外是从1968å¹´æ‰å¼€å§‹è®¾ç«‹çš„。 1968年美国å”·欧·克努特教授开创了数æ®ç»“构的最åˆä½“系,他所著的《计算机程åºè®¾è®¡æŠ€å·§ã€‹ç¬¬ä¸€å·ã€ŠåŸºæœ¬ç®—法》是第一本较系统地é˜è¿°æ•°æ®çš„逻辑结构和存储结构åŠå…¶æ“作的著作。“数æ®ç»“æž„â€åœ¨è®¡ç®—æœºç§‘å­¦ä¸­æ˜¯ä¸€é—¨ç»¼åˆæ€§çš„专业基础课。数æ®ç»“构是介于数学ã€è®¡ç®—机硬件和计算机软件三者之间的一门核心课程。数æ®ç»“构这一门课的内容ä¸ä»…是一般程åºè®¾è®¡ï¼ˆç‰¹åˆ«æ˜¯éžæ•°å€¼æ€§ç¨‹åºè®¾è®¡ï¼‰çš„基础,而且是设计和实现编译程åºã€æ“ä½œç³»ç»Ÿã€æ•°æ®åº“系统åŠå…¶ä»–系统程åºçš„é‡è¦åŸºç¡€ã€‚ 计算机是一门研究用计算机进行信æ¯è¡¨ç¤ºå’Œå¤„ç†çš„ç§‘å­¦ã€‚è¿™é‡Œé¢æ¶‰åŠåˆ°ä¸¤ä¸ªé—®é¢˜ï¼š
- ä¿¡æ¯çš„表示
- ä¿¡æ¯çš„å¤„ç† è€Œä¿¡æ¯çš„表示和组åˆç›´æŽ¥å…³ç³»åˆ°å¤„ç†ä¿¡æ¯çš„程åºçš„æ•ˆçŽ‡ã€‚éšç€è®¡ç®—机的普åŠï¼Œä¿¡æ¯é‡çš„增加,信æ¯èŒƒå›´çš„æ‹“宽,使许多系统程åºå’Œåº”用程åºçš„规模很大,结构åˆç›¸å½“夿‚。因此,为了编写出一个“好â€çš„程åºï¼Œå¿…须分æžå¾…处ç†çš„对象的特å¾åŠå„对象之间存在的关系,这就是数æ®ç»“构这门课所è¦ç ”ç©¶çš„é—®é¢˜ã€‚ä¼—æ‰€å‘¨çŸ¥ï¼Œè®¡ç®—æœºçš„ç¨‹åºæ˜¯å¯¹ä¿¡æ¯è¿›è¡ŒåР工处ç†ã€‚在大多数情况下,这些信æ¯å¹¶ä¸æ˜¯æ²¡æœ‰ç»„织,信æ¯ï¼ˆæ•°æ®ï¼‰ä¹‹é—´å¾€å¾€å…·æœ‰é‡è¦çš„结构关系,这就是数æ®ç»“构的内容。数æ®çš„结构,直接影å“算法的选择和效率。 计算机解决一个具体问题时,大致需è¦ç»è¿‡ä¸‹åˆ—几个步骤:首先è¦ä»Žå…·ä½“问题中抽象出一个适当的数学模型,然åŽè®¾è®¡ä¸€ä¸ªè§£æ­¤æ•°å­¦æ¨¡åž‹çš„算法(Algorithm),最åŽç¼–出程åºã€è¿›è¡Œæµ‹è¯•ã€è°ƒæ•´ç›´è‡³å¾—到最终解答。寻求数学模型的实质是分æžé—®é¢˜ï¼Œä»Žä¸­æå–æ“作的对象,并找出这些æ“ä½œå¯¹è±¡ä¹‹é—´å«æœ‰çš„关系,然åŽç”¨æ•°å­¦çš„语言加以æè¿°ã€‚计算机算法与数æ®çš„结构密切相关,算法无ä¸ä¾é™„于具体的数æ®ç»“构,数æ®ç»“构直接关系到算法的选择和效率。è¿ç®—是由计算机æ¥å®Œæˆï¼Œè¿™å°±è¦è®¾è®¡ç›¸åº”çš„æ’å…¥ã€åˆ é™¤å’Œä¿®æ”¹çš„算法 。也就是说,数æ®ç»“构还需è¦ç»™å‡ºæ¯ç§ç»“构类型所定义的å„ç§è¿ç®—的算法。 æ•°æ®æ˜¯å¯¹å®¢è§‚事物的符å·è¡¨ç¤ºï¼Œåœ¨è®¡ç®—机科学中是指所有能输入到计算机中并由计算机程åºå¤„ç†çš„符å·çš„æ€»ç§°ã€‚ æ•°æ®å…ƒç´ æ˜¯æ•°æ®çš„基本å•ä½ï¼Œåœ¨è®¡ç®—机程åºä¸­é€šå¸¸ä½œä¸ºä¸€ä¸ªæ•´ä½“考虑。一个数æ®å…ƒç´ ç”±è‹¥å¹²ä¸ªæ•°æ®é¡¹ç»„æˆã€‚æ•°æ®é¡¹æ˜¯æ•°æ®çš„ä¸å¯åˆ†å‰²çš„æœ€å°å•ä½ã€‚有两类数æ®å…ƒç´ ï¼šä¸€ç±»æ˜¯ä¸å¯åˆ†å‰²çš„原å­åž‹æ•°æ®å…ƒç´ ï¼Œå¦‚:整数"5",字符 "N" 等;å¦ä¸€ç±»æ˜¯ç”±å¤šä¸ªæ¬¾é¡¹æž„æˆçš„æ•°æ®å…ƒç´ ï¼Œå…¶ä¸­æ¯ä¸ªæ¬¾é¡¹è¢«ç§°ä¸ºä¸€ä¸ªæ•°æ®é¡¹ã€‚例如æè¿°ä¸€ä¸ªå­¦ç”Ÿçš„ä¿¡æ¯çš„æ•°æ®å…ƒç´ å¯ç”±ä¸‹åˆ—6个数æ®é¡¹ç»„æˆã€‚其中的出身日期åˆå¯ä»¥ç”±ä¸‰ä¸ªæ•°æ®é¡¹ï¼š"å¹´"ã€"月"å’Œ"æ—¥"组æˆï¼Œåˆ™ç§°"出身日期"为组åˆé¡¹ï¼Œè€Œå…¶å®ƒä¸å¯åˆ†å‰²çš„æ•°æ®é¡¹ä¸ºåŽŸå­é¡¹ã€‚ 关键字指的是能识别一个或多个数æ®å…ƒç´ çš„æ•°æ®é¡¹ã€‚若能起唯一识别作用,则称之为 "主" 关键字,å¦åˆ™ç§°ä¹‹ä¸º "次" 关键字。 æ•°æ®å¯¹è±¡æ˜¯æ€§è´¨ç›¸åŒçš„æ•°æ®å…ƒç´ çš„集åˆï¼Œæ˜¯æ•°æ®çš„一个å­é›†ã€‚æ•°æ®å¯¹è±¡å¯ä»¥æ˜¯æœ‰é™çš„,也å¯ä»¥æ˜¯æ— é™çš„。 æ•°æ®å¤„ç†æ˜¯æŒ‡å¯¹æ•°æ®è¿›è¡ŒæŸ¥æ‰¾ã€æ’å…¥ã€åˆ é™¤ã€åˆå¹¶ã€æŽ’åºã€ç»Ÿè®¡ä»¥åŠç®€å•计算等的æ“作过程。在早期,计算机主è¦ç”¨äºŽç§‘学和工程计算,进入八å年代以åŽï¼Œè®¡ç®—机主è¦ç”¨äºŽæ•°æ®å¤„ç†ã€‚æ®æœ‰å…³ç»Ÿè®¡èµ„料表明,现在计算机用于数æ®å¤„ç†çš„æ—¶é—´æ¯”例达到80%以上,éšç€æ—¶é—´çš„æŽ¨ç§»å’Œè®¡ç®—机应用的进一步普åŠï¼Œè®¡ç®—机用于数æ®å¤„ç†çš„æ—¶é—´æ¯”例必将进一步增大。 æ•°æ®ç»“构是指åŒä¸€æ•°æ®å…ƒç´ ç±»ä¸­å„æ•°æ®å…ƒç´ ä¹‹é—´å­˜åœ¨çš„关系。数æ®ç»“构分别为逻辑结构ã€å­˜å‚¨ç»“构(物ç†ç»“构)和数æ®çš„è¿ç®—。数æ®çš„逻辑结构是对数æ®ä¹‹é—´å…³ç³»çš„æè¿°ï¼Œæœ‰æ—¶å°±æŠŠé€»è¾‘结构简称为数æ®ç»“构。逻辑结构形å¼åœ°å®šä¹‰ä¸ºï¼ˆK,R)(或(D,S)),其中,K是数æ®å…ƒç´ çš„æœ‰é™é›†ï¼ŒR是K上的关系的有é™é›†ã€‚ æ•°æ®å…ƒç´ ç›¸äº’之间的关系称为结构。有四类基本结构:集åˆã€çº¿æ€§ç»“æž„ã€æ ‘形结构ã€å›¾çŠ¶ç»“æž„ï¼ˆç½‘çŠ¶ç»“æž„ï¼‰ã€‚æ ‘å½¢ç»“æž„å’Œå›¾å½¢ç»“æž„å…¨ç§°ä¸ºéžçº¿æ€§ç»“构。集åˆç»“构中的数æ®å…ƒç´ é™¤äº†åŒå±žäºŽä¸€ç§ç±»åž‹å¤–,别无其它关系。线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。在图形结构中æ¯ä¸ªç»“点的å‰é©±ç»“点数和åŽç»­ç»“点数å¯ä»¥ä»»æ„多个。 æ•°æ®ç»“构在计算机中的表示(映åƒï¼‰ç§°ä¸ºæ•°æ®çš„物ç†ï¼ˆå­˜å‚¨ï¼‰ç»“构。它包括数æ®å…ƒç´ çš„表示和关系的表示。数æ®å…ƒç´ ä¹‹é—´çš„关系有两ç§ä¸åŒçš„è¡¨ç¤ºæ–¹æ³•ï¼šé¡ºåºæ˜ è±¡å’Œéžé¡ºåºæ˜ è±¡ï¼Œå¹¶ç”±æ­¤å¾—到两ç§ä¸åŒçš„存储结构:顺åºå­˜å‚¨ç»“构和链å¼å­˜å‚¨ç»“构。顺åºå­˜å‚¨æ–¹æ³•:它是把逻辑上相邻的结点存储在物ç†ä½ç½®ç›¸é‚»çš„存储å•元里,结点间的逻辑关系由存储å•元的邻接关系æ¥ä½“现,由此得到的存储表示称为顺åºå­˜å‚¨ç»“构。顺åºå­˜å‚¨ç»“æž„æ˜¯ä¸€ç§æœ€åŸºæœ¬çš„存储表示方法,通常借助于程åºè®¾è®¡è¯­è¨€ä¸­çš„æ•°ç»„æ¥å®žçŽ°ã€‚é“¾æŽ¥å­˜å‚¨æ–¹æ³•ï¼šå®ƒä¸è¦æ±‚逻辑上相邻的结点在物ç†ä½ç½®ä¸Šäº¦ç›¸é‚»ï¼Œç»“点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为链å¼å­˜å‚¨ç»“构,链å¼å­˜å‚¨ç»“构通常借助于程åºè®¾è®¡è¯­è¨€ä¸­çš„æŒ‡é’ˆç±»åž‹æ¥å®žçŽ°ã€‚ç´¢å¼•å­˜å‚¨æ–¹æ³•ï¼šé™¤å»ºç«‹å­˜å‚¨ç»“ç‚¹ä¿¡æ¯å¤–ï¼Œè¿˜å»ºç«‹é™„åŠ çš„ç´¢å¼•è¡¨æ¥æ ‡è¯†ç»“点的地å€ã€‚散列存储方法:就是根æ®ç»“点的关键字直接计算出该结点的存储地å€ã€‚ æ•°æ®ç»“构中,逻辑上(逻辑结构:数æ®å…ƒç´ ä¹‹é—´çš„逻辑关系)å¯ä»¥æŠŠæ•°æ®ç»“构分æˆçº¿æ€§ç»“构和éžçº¿æ€§ç»“构。线性结构的顺åºå­˜å‚¨ç»“构是一ç§éšæœºå­˜å–的存储结构,线性表的链å¼å­˜å‚¨ç»“构是一ç§é¡ºåºå­˜å–的存储结构。线性表若采用链å¼å­˜å‚¨è¡¨ç¤ºæ—¶æ‰€æœ‰ç»“点之间的存储å•元地å€å¯è¿žç»­å¯ä¸è¿žç»­ã€‚逻辑结构与数æ®å…ƒç´ æœ¬èº«çš„å½¢å¼ã€å†…容ã€ç›¸å¯¹ä½ç½®ã€æ‰€å«ç»“点个数都无关。 算法的设计å–决于数æ®ï¼ˆé€»è¾‘)结构,而算法的实现ä¾èµ–于采用的存储结构。数æ®çš„è¿ç®—是在数æ®çš„逻辑结构上定义的æ“ä½œç®—æ³•ï¼Œå¦‚æ£€ç´¢ã€æ’å…¥ã€åˆ é™¤ã€æ›´æ–°çš„æŽ’åºç­‰ã€‚ æ•°æ®ç»“构的形å¼å®šä¹‰ä¸ºï¼šæ•°æ®ç»“构是一个二元组: Data-Structure=(D,S) 其中:D是数æ®å…ƒç´ çš„æœ‰é™é›†ï¼ŒS是D上关系的有é™é›†ã€‚ æ•°æ®ç»“æž„ä¸åŒäºŽæ•°æ®ç±»åž‹ï¼Œä¹Ÿä¸åŒäºŽæ•°æ®å¯¹è±¡ï¼Œå®ƒä¸ä»…è¦æè¿°æ•°æ®ç±»åž‹çš„æ•°æ®å¯¹è±¡ï¼Œè€Œä¸”è¦æè¿°æ•°æ®å¯¹è±¡å„元素之间的相互关系。 æ•°æ®ç±»åž‹æ˜¯ä¸€ä¸ªå€¼çš„集åˆå’Œå®šä¹‰åœ¨è¿™ä¸ªå€¼é›†ä¸Šçš„一组æ“作的总称。数æ®ç±»åž‹å¯åˆ†ä¸ºä¸¤ç±»ï¼šåŽŸå­ç±»åž‹ã€ç»“构类型。一方é¢ï¼Œåœ¨ç¨‹åºè®¾è®¡è¯­è¨€ä¸­ï¼Œæ¯ä¸€ä¸ªæ•°æ®éƒ½å±žäºŽæŸç§æ•°æ®ç±»åž‹ã€‚类型明显或éšå«åœ°è§„定了数æ®çš„å–值范围ã€å­˜å‚¨æ–¹å¼ä»¥åŠå…许进行的è¿ç®—。å¯ä»¥è®¤ä¸ºï¼Œæ•°æ®ç±»åž‹æ˜¯åœ¨ç¨‹åºè®¾è®¡ä¸­å·²ç»å®žçŽ°äº†çš„æ•°æ®ç»“构。å¦ä¸€æ–¹é¢ï¼Œåœ¨ç¨‹åºè®¾è®¡è¿‡ç¨‹ä¸­ï¼Œå½“需è¦å¼•å…¥æŸç§æ–°çš„æ•°æ®ç»“构时,总是借助编程语言所æä¾›çš„æ•°æ®ç±»åž‹æ¥æè¿°æ•°æ®çš„存储结构。 计算机中表示数æ®çš„æœ€å°å•使˜¯äºŒè¿›åˆ¶æ•°çš„一ä½ï¼Œå«åšä½ã€‚我们用一个由若干ä½ç»„åˆèµ·æ¥å½¢æˆçš„一个ä½ä¸²è¡¨ç¤ºä¸€ä¸ªæ•°æ®å…ƒç´ ï¼Œé€šå¸¸ç§°è¿™ä¸ªä½ä¸²ä¸ºå…ƒç´ æˆ–结点。当数æ®å…ƒç´ ç”±è‹¥å¹²æ•°æ®é¡¹ç»„æˆæ—¶ï¼Œä½ä¸²ä¸­å¯¹åº”于å„个数æ®é¡¹çš„å­ä½ä¸²ç§°ä¸ºæ•°æ®åŸŸã€‚元素或结点å¯çœ‹æˆæ˜¯æ•°æ®å…ƒç´ åœ¨è®¡ç®—机中的映象。 一个软件系统框架应建立在数æ®ä¹‹ä¸Šï¼Œè€Œä¸æ˜¯å»ºç«‹åœ¨æ“ä½œä¹‹ä¸Šã€‚ä¸€ä¸ªå«æŠ½è±¡æ•°æ®ç±»åž‹çš„软件模å—应包å«å®šä¹‰ã€è¡¨ç¤ºã€å®žçŽ°ä¸‰ä¸ªéƒ¨åˆ†ã€‚ 对æ¯ä¸€ä¸ªæ•°æ®ç»“构而言,必定存在与它密切相关的一组æ“作。若æ“作的ç§ç±»å’Œæ•°ç›®ä¸åŒï¼Œå³ä½¿é€»è¾‘结构相åŒï¼Œæ•°æ®ç»“构能起的作用也ä¸åŒã€‚ ä¸åŒçš„æ•°æ®ç»“构其æ“作集ä¸åŒï¼Œä½†ä¸‹åˆ—æ“作必ä¸å¯ç¼ºï¼š #结构的生æˆï¼› #结构的销æ¯ï¼› #在结构中查找满足规定æ¡ä»¶çš„æ•°æ®å…ƒç´ ï¼› #在结构中æ’入新的数æ®å…ƒç´ ï¼› #删除结构中已ç»å­˜åœ¨çš„æ•°æ®å…ƒç´ ï¼› #é历。 抽象数æ®ç±»åž‹ï¼šä¸€ä¸ªæ•°å­¦æ¨¡åž‹ä»¥åŠå®šä¹‰åœ¨è¯¥æ¨¡åž‹ä¸Šçš„一组æ“作。抽象数æ®ç±»åž‹å®žé™…上就是对该数æ®ç»“构的定义。因为它定义了一个数æ®çš„逻辑结构以åŠåœ¨æ­¤ç»“构上的一组算法。抽象数æ®ç±»åž‹å¯ç”¨ä»¥ä¸‹ä¸‰å…ƒç»„表示:(D,S,P)。D是数æ®å¯¹è±¡ï¼ŒS是D上的关系集,P是对D的基本æ“作集。ADT的定义为: ADT 抽象数æ®ç±»åž‹å ADT 抽象数æ®ç±»åž‹å; 抽象数æ®ç±»åž‹æœ‰ä¸¤ä¸ªé‡è¦ç‰¹æ€§ï¼š
- æ•°æ®æŠ½è±¡
  - 用ADTæè¿°ç¨‹åºå¤„ç†çš„实体时,强调的是其本质的特å¾ã€å…¶æ‰€èƒ½å®Œæˆçš„功能以åŠå®ƒå’Œå¤–部用户的接å£ï¼ˆå³å¤–界使用它的方法)。
- æ•°æ®å°è£…
  - 将实体的外部特性和其内部实现细节分离,并且对外部用户éšè—其内部实现细节。

常用的数æ®ç»“æž„


- 离散结构
  - 集åˆ
    - 并查集
    - å­—å…¸
      - 有åºå­—å…¸
- 线性结构
  - 线性表
    - 顺åºè¡¨
    - 链表(éµçµä¸²åˆ—)
      - å•链表
      -
- 陿€å•链表
      -
- 跳表 (Skip list)
      - åŒé“¾è¡¨
      - 循环链表
      -
- å•循环链表
      -
- åŒå¾ªçŽ¯é“¾è¡¨
  - 散列表(哈希表或雜湊表)
  - æ ˆ(堆疊)
  - 队列(佇列)
    - 链队列
    - 循环队列
    - 优先队列 (有时使用堆æ¥å®žçް)
  - åŒç«¯é˜Ÿåˆ—
  - 串
  - 跳跃表
- éžçº¿æ€§ç»“æž„
  - 数组
    - 二维数组(矩阵)
      - 稀ç–矩阵
  - 广义表
  - 树形结构
    - äºŒå‰æ ‘(二元樹)
      - å“ˆå¤«æ›¼æ ‘ï¼ˆæœ€ä¼˜äºŒå‰æ ‘)
      - çº¿ç´¢äºŒå‰æ ‘
      - äºŒå‰æŽ’åºæ ‘
      -
- å¹³è¡¡äºŒå‰æ ‘
      -
  - AVLæ ‘
      -
  - 红黑树
      -
    - AAæ ‘
      -
  - 伸展树
      -
- 线段树
      - å †
      -
- 二å‰å †
      -
- 二项堆
      -
- æ–æ³¢çº³å¥‘å †
      -
- é…对堆
    - 森林
    - Bæ ‘
      - 2-3-4æ ‘
    - å‰–æžæ ‘
    - åŽç¼€æ ‘
    - Trie
    - 四剿 ‘ (Quadtree)
    - 八剿 ‘ (Octree)
    - kdæ ‘
    - ç”Ÿæˆæ ‘
      - 最å°ç”Ÿæˆæ ‘
  - 图状结构(网状结构)
    - 有å‘图
      - 有å‘网 (å¸¦æƒæœ‰å‘图)
      - æœ‰å‘æ— çޝ图 (DAG)
      -
- AOE网 (å¸¦æƒæœ‰å‘无环图)
      -
- AOV网
    - æ— å‘图
      - æ— å‘网 (å¸¦æƒæ— å‘图)
    - 连通图
      - 强连通图
    - 完全图
    - 稀ç–图
    - 稠密图
    - 表示方法
      - 邻接矩阵
      - 邻接表
      - å字链表
      - 邻接多é‡è¡¨
- å…¶ä»–æ•°æ®ç»“æž„
  - 标签è”åˆ
  - è”åˆ
  - 框架
  - æ•°æ®åº“和“表â€

相关æ¡ç›®


- 算法
- 计算机科学
- 计算机科学课程列表

å‚考文献


- Cliford A. Shafferï¼å¼ é“­ç­‰è¯‘:数æ®ç»“构与算法分æžï¼ˆC++版,第二版),电å­å·¥ä¸šå‡ºç‰ˆç¤¾ ISBN 7-5053-7646-2/TP.4425 [http://www.china-pub.com/computers/common/info.asp?id=6469]
- ä¸¥è”šæ• å´ä¼Ÿæ°‘著:数æ®ç»“构(C语言版),清åŽå¤§å­¦å‡ºç‰ˆç¤¾ ISBN 7-302-02368-9/TP.1185 [http://www.welan.com/html/00/32100.Html] Category:æ•°æ®ç»“æž„ ja:データ構造 ko:ìžë£Œêµ¬ì¡° th:โครงสร้างข้อมูล

尼夿‹‰æ–¯Â·æ²ƒæ–¯

尼夿‹‰æ–¯Â·æ²ƒæ–¯ï¼ˆNiklaus Wirth,1934å¹´2月15日—),生於瑞士溫特圖爾,是瑞士計算機科學家。 從1963年到1967年,他æˆç‚ºæ–¯å¦ç¦å¤§å­¦çš„è¨ˆç®—æ©Ÿç§‘å­¸éƒ¨åŠ©ç†æ•™æŽˆï¼Œä¹‹å¾Œåˆåœ¨è‹é»Žä¸–大学擔當相åŒçš„è·ä½ã€‚1968年,他æˆç‚ºETH的信æ¯å­¦æ•™æŽˆï¼Œåˆå¾€æ–½ä¹å¸•洛阿尔托研究中心進修了兩年。 他是好幾ç§ç·¨ç¨‹èªžè¨€çš„主設計師:
- Algol W
- Modula
- Pascal
- Modula-2
- Oberon 他亦是Euler語言的發明者之一。1984年他因發展了這些語言而ç²å›¾çµå¥–。他亦是Lilith電腦和Oberon系統的設計和執行隊ä¼çš„é‡è¦æˆå“¡ã€‚ 他的文章Program Development by Stepwise Refinement視為軟體工程中的經典之作。他寫的一本書的書åAlgorithms + Data Structures = Programs(算法+æ•°æ®ç»“æž„=程å¼ï¼‰æ˜¯è¨ˆç®—機科學的åå¥ã€‚ æ­æ´²äººé€šå¸¸éƒ½å°‡ä»–çš„å字讀得正確,讀作“Nih-klaus Virtâ€ï¼›ä½†ç¾Žåœ‹äººé€šå¸¸è®€æˆâ€œNickles Worthâ€è¿‘ä¼¼çš„éŸ³ã€‚æ–¼æ˜¯æœ‰äººä¾¿èªªï¼Œæ­æ´²äººå‚³å€å‘¼å«ä»–,美國人傳值呼å«ä»–。

外部éˆçµ


- [http://www.cs.inf.ethz.ch/~wirth/ 他的主é ]
- [http://www.swissdelphicenter.ch/en/niklauswirth.php Pascal and its Successors]
- [http://www.acm.org/classics/dec95 Program Development by Stepwise Refinement], Communications of the ACM, Vol. 14, No. 4, Aprile 1971, pp. 221-227 category:瑞士人 category:程åºå“¡

æ•°æ®

æ•°æ®æ˜¯å¯å®šä¹‰ä¸ºæ„义的实体,它涉åŠåˆ°äº‹ç‰©çš„存在形å¼ã€‚它是关于事件的一组离散的客观的事实æè¿°ï¼Œæ˜¯æž„æˆä¿¡æ¯å’ŒçŸ¥è¯†çš„åŽŸå§‹ææ–™ã€‚æ•°æ®å¯åˆ†ä¸ºæ¨¡æ‹Ÿæ•°æ®å’Œæ•°å­—æ•°æ®ä¸¤å¤§ç±»ã€‚æ•°æ®æŒ‡è®¡ç®—机加工的“原料â€ï¼Œå¦‚图形ã€å£°éŸ³ã€æ–‡å­—ã€æ•°ã€å­—符和符å·ç­‰ã€‚
-
ja:データ ko:ë°ì´í„° simple:Data

é¢å‘对象的程åºè®¾è®¡

é¢å‘对象的程åºè®¾è®¡ï¼ˆObject Oriented Programming,简称OOP,亦有譯為物件導å‘),指一ç§ç¨‹åºè®¾è®¡èŒƒåž‹ï¼ŒåŒæ—¶ä¹Ÿæ˜¯æ˜¯ä¸€ç§ç¨‹åºå¼€å‘的方法论。它的最大特点是能够大幅度的æé«˜è½¯ä»¶é¡¹ç›®çš„æˆåŠŸçŽ‡ï¼Œå‡å°‘æ—¥åŽçš„维护费用,æé«˜è½¯ä»¶çš„å¯ç§»æ¤æ€§å’Œå¯é æ€§ã€‚ 它的特å¾ä¸»è¦åŒ…括以下几个方é¢ï¼š
- 对象的使用—对象的概念被广泛的使用在从建模到构建程åºçš„å„个方é¢ã€‚
- 抽象化—将å„ç§ç‹¬ç«‹çš„æ“ä½œåˆ†è§£æˆä¸ºå¯ä»¥ç”¨å‘½å区分的å•元。
- å°è£…性—ä¸åŒçš„æ“ä½œå…·æœ‰ä¸åŒçš„作用范围。
- å¤šæ€æ€§â€”对于ä¸åŒæ•°æ®ç±»åž‹çš„相似æ“作使用相åŒçš„命å。
- 继承性—类å¯ä»¥è¢«ç»§æ‰¿ï¼Œä»Žè€Œå®žçްä¸åŒå±‚次的对象。 抽象化是é¢å‘å°è±¡çš„一个é‡è¦ç‰¹å¾ä½†æ˜¯å¹¶ä¸æ˜¯å®ƒæ‰€ç‹¬æœ‰çš„特å¾ã€‚é‡ç”¨æ˜¯é¢å‘å°è±¡çš„一个é‡è¦ä¼˜ç‚¹ã€‚ 当我们æåˆ°é¢å‘对象的时候,它ä¸ä»…指一ç§ç¨‹åºè®¾è®¡æ–¹æ³•。它更多æ„义上是一ç§ç¨‹åºå¼€å‘范å¼ã€‚在这一方é¢ï¼Œæˆ‘们必须了解更多关于é¢å‘对象的分æžï¼ˆObject Oriented Analysis,简称OOA)和é¢å‘对象的设计(Object Oriented Design,简称OOD)方é¢çš„知识。

基本ç†è®º

继承性

å¯ä»¥æŠŠåŒä¸€æ´¾ç”Ÿåˆ†æžçš„通用性方法分é…在åˆç†çš„祖先类层次上。父类的属性,å­ç±»ä¼šæ— æ¡ä»¶ç»§æ‰¿ã€‚

å°è£…性

éšè—具体实现的细节,有利于程åºçš„局部化,进而å‡å°ç¨‹åºå‡ºé”™çš„å¯èƒ½æ€§å’Œå¢žå¼ºå¯ç»´æŠ¤æ€§ã€‚

å¤šæ€æ€§

为åŽä»£ç±»è¡Œä¸ºæ–¹æ³•çš„å˜å¼‚æä¾›äº†ä¸€ç§å¯èƒ½æ€§ï¼Œå³ä½¿æ˜¯ä»ŽåŒä¸€ç¥–先派生下æ¥çš„行为,也å¯ä»¥å‘ç”Ÿå·®å¼‚åŒ–ï¼Œä»Žè€Œå¢žå¼ºäº†ç³»ç»Ÿçš„çµæ´»æ€§ã€‚

é¢å‘对象的语言

支æŒéƒ¨åˆ†æˆ–ç»å¤§éƒ¨åˆ†é¢å‘对象特性的语言å³å¯ç§°ä¸ºåŸºäºŽå¯¹è±¡çš„æˆ–é¢å‘对象的语言。 早期,完全é¢å‘对象的语言主è¦åŒ…括Smalltalk等语言,目å‰è¾ƒä¸ºæµè¡Œçš„语言中有Javaã€C#ã€Eiffel等。éšç€è½¯ä»¶å·¥ä¸šçš„å‘展,比较早的é¢å‘过程的语言在近些年的å‘å±•ä¸­ä¹Ÿçº·çº·å¸æ”¶äº†è®¸å¤šé¢å‘对象的概念,比如C->C++,BASIC->Visual Basic->Visual Basic.NET,Pascal->Object Pascal,Ada->Ada95。

基于类的模å¼

基于对象的模å¼

历å²

相关书ç±

相关内容

外部链接

Category:編程典範 Category:é¢å‘对象的程åºè®¾è®¡ ja:ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆæŒ‡å‘ ms:Pengaturcaraan Berorientasikan Objek th:à¸à¸²à¸£à¹€à¸‚ียนโปรà¹à¸à¸£à¸¡à¹€à¸Šà¸´à¸‡à¸§à¸±à¸•ถุ

æ•°æ®

æ•°æ®æ˜¯å¯å®šä¹‰ä¸ºæ„义的实体,它涉åŠåˆ°äº‹ç‰©çš„存在形å¼ã€‚它是关于事件的一组离散的客观的事实æè¿°ï¼Œæ˜¯æž„æˆä¿¡æ¯å’ŒçŸ¥è¯†çš„åŽŸå§‹ææ–™ã€‚æ•°æ®å¯åˆ†ä¸ºæ¨¡æ‹Ÿæ•°æ®å’Œæ•°å­—æ•°æ®ä¸¤å¤§ç±»ã€‚æ•°æ®æŒ‡è®¡ç®—机加工的“原料â€ï¼Œå¦‚图形ã€å£°éŸ³ã€æ–‡å­—ã€æ•°ã€å­—符和符å·ç­‰ã€‚
-
ja:データ ko:ë°ì´í„° simple:Data

集åˆ

集åˆï¼ˆæˆ–簡稱集)是基本的数学概念,它是集åˆè®ºçš„ç ”ç©¶å¯¹è±¡ã€‚æœ€ç°¡å–®çš„èªªæ³•ï¼Œå³æ˜¯åœ¨æœ€åŽŸå§‹çš„é›†åˆè«–─朴素集åˆè«–─中的定義,集åˆå°±æ˜¯â€œä¸€å †æ±è¥¿â€ã€‚集åˆè£¡çš„“æ±è¥¿â€ï¼Œå«ä½œå…ƒç´ ã€‚若然 x æ˜¯é›†åˆ A 的元素,記作 xA。 é›†åˆæ˜¯çŽ°ä»£æ•°å­¦ä¸­ä¸€ä¸ªé‡è¦çš„基本概念。集åˆè®ºçš„基本ç†è®ºç›´åˆ°åä¹ä¸–纪末æ‰è¢«åˆ›ç«‹ï¼ŒçŽ°åœ¨å·²ç»æ˜¯æ•°å­¦æ•™è‚²ä¸­ä¸€ä¸ªæ™®é存在的部分,在å°å­¦æ—¶å°±å¼€å§‹å­¦ä¹ äº†ã€‚这里对被数学家们称为"ç›´è§‚çš„"或"朴素的"集åˆè®ºè¿›è¡Œä¸€ä¸ªç®€çŸ­è€ŒåŸºæœ¬çš„介ç»ï¼›æ›´è¯¦ç»†çš„分æžå¯è§æœ´ç´ é›†åˆè®ºã€‚对集åˆè¿›è¡Œä¸¥æ ¼çš„å…¬ç†æŽ¨å¯¼å¯è§å…¬ç†é›†åˆè®ºã€‚

导言

éžæ­£å¼çš„,一个集åˆå°±æ˜¯å°†å‡ ä¸ªå¯¹è±¡é€‚当归类而作为一个整体。集åˆä¸­çš„对象称作元素或æˆå‘˜ã€‚集åˆä¸­çš„元素å¯ä»¥æ˜¯ä»»ä½•东西:数字,人,字æ¯ï¼Œåˆ«çš„集åˆï¼Œç­‰ç­‰ã€‚集åˆé€šå¸¸è¡¨ç¤ºä¸ºå¤§å†™å­—æ¯ A, B, Cï¼Œç­‰ç­‰ã€‚ä¸¤ä¸ªé›†åˆ A å’Œ B 相等,写作 A = B,如果它们有相åŒçš„元素。

集åˆçš„表示


- 集åˆå¯ä»¥ç”¨æ–‡å­—æè¿°ï¼Œæ¯”如: :A = 大于零的å‰ä¸‰ä¸ªè‡ªç„¶æ•° :B = 红色ã€ç™½è‰²ã€è“色和绿色
- 集åˆçš„å¦ä¸€ç§è¡¨ç¤ºæ–¹æ³•是在大括å·ä¸­åˆ—出其元素,比如: :C = :D = å°½ç®¡ä¸¤ä¸ªé›†åˆæœ‰ä¸åŒçš„表示,它们ä»å¯èƒ½æ˜¯ç›¸åŒçš„。比如:上述集åˆä¸­ï¼ŒA = C 而 B = D,因为它们正好有相åŒçš„元素。 元素列出的顺åºä¸åŒï¼Œæˆ–者元素列表中有é‡å¤ï¼Œéƒ½æ²¡æœ‰å…³ç³»ã€‚æ¯”å¦‚ï¼šè¿™ä¸‰ä¸ªé›†åˆ ï¼Œ å’Œ 是相åŒçš„ï¼ŒåŒæ ·å› ä¸ºå®ƒä»¬æœ‰ç›¸åŒçš„元素。
- 集åˆåœ¨ä¸ä¸¥æ ¼çš„æ„ä¹‰ä¸‹ä¹Ÿå¯ä»¥é€šè¿‡è‰å›¾æ¥è¡¨ç¤ºï¼Œæ›´å¤šä¿¡æ¯ï¼Œè¯·è§æ–‡æ°å›¾ã€‚

集åˆçš„元素个数

上述æ¯ä¸€ä¸ªé›†åˆéƒ½æœ‰ç¡®å®šçš„å…ƒç´ ä¸ªæ•°ï¼›æ¯”å¦‚ï¼šé›†åˆ A æœ‰ä¸‰ä¸ªå…ƒç´ ï¼Œè€Œé›†åˆ B 有四个。 集åˆå¯ä»¥æ²¡æœ‰å…ƒç´ ã€‚这样的集åˆå«åšç©ºé›†ï¼Œç”¨ç¬¦å· \varnothing 表示。比如:在2004å¹´ï¼Œé›†åˆ A 是所有ä½åœ¨æœˆçƒä¸Šçš„人,它没有元素,则 A = \varnothingã€‚å°±åƒæ•°å­—零,看上去微ä¸è¶³é“,而在数学上,空集éžå¸¸é‡è¦ã€‚更多信æ¯è¯·çœ‹ç©ºé›†ã€‚ 集åˆä¹Ÿå¯ä»¥æœ‰æ— ç©·å¤šä¸ªå…ƒç´ ã€‚æ¯”å¦‚ï¼šè‡ªç„¶æ•°çš„é›†åˆæ˜¯æ— ç©·å¤§çš„。关于无穷大和集åˆçš„大å°çš„æ›´å¤šä¿¡æ¯è¯·è§é›†åˆçš„势。

å­é›†

å¦‚æžœé›†åˆ A çš„æ‰€æœ‰å…ƒç´ åŒæ—¶éƒ½æ˜¯é›†åˆ B 的元素,则 A 称作是 B çš„å­é›†ï¼Œå†™ä½œ AB。若 A 是 B çš„å­é›†ï¼Œä¸” A ä¸ç­‰äºŽ B,则 A 称作是 B 的真å­é›†ï¼Œå†™ä½œ A ⊂ B。 势 举例: :
- æ‰€æœ‰ç”·äººçš„é›†åˆæ˜¯æ‰€æœ‰äººçš„集åˆçš„真å­é›†ã€‚ :
- æ‰€æœ‰è‡ªç„¶æ•°çš„é›†åˆæ˜¯æ‰€æœ‰æ•´æ•°çš„集åˆçš„真å­é›†ã€‚ :
-  ⊂  :
-  ⊆  空集是所有集åˆçš„å­é›†ï¼Œè€Œæ‰€æœ‰é›†åˆéƒ½æ˜¯å…¶æœ¬èº«çš„å­é›†ï¼š :
- \varnothingA :
- AA 更多信æ¯ï¼Œè¯·è§å­é›†ã€‚

并集

æœ‰å¤šç§æ–¹æ³•é€šè¿‡çŽ°æœ‰é›†åˆæ¥æž„造新的集åˆã€‚ 两个集åˆå¯ä»¥ç›¸"加"。A å’Œ B 的并集,写作 A ∪ B,是或属于 A çš„ã€æˆ–属于 B 的所有元素组æˆçš„集åˆã€‚ å­é›† 举例: :
-  ∪  = :
-  ∪  = :
-  ∪  = 并集的一些基本性质 :
- A ∪ B   =   B ∪ A :
- A  ⊆  A ∪ B :
- A ∪ A   =  A :
- A ∪ \varnothing   =  A 更多信æ¯ï¼Œè¯·è§å¹¶é›†.

交集

一个新的集åˆä¹Ÿå¯ä»¥é€šè¿‡ä¸¤ä¸ªé›†åˆ"å…±"æœ‰çš„å…ƒç´ æ¥æž„造。A å’Œ B 的交集,写作 A ∩ B,是既属于 A çš„ã€åˆå±žäºŽ B 的所有元素组æˆçš„集åˆã€‚ è‹¥ A ∩ B  =  \varnothing,则 A å’Œ B 称作ä¸ç›¸äº¤ã€‚ 并集 举例: :
-  ∩  = \varnothing :
-  ∩  = :
-  ∩  = 交集的一些基本性质 :
- A ∩ B   =   B ∩ A :
- A ∩ B   ⊆   A :
- A ∩ A   =   A :
- A ∩ \varnothing   =   \varnothing 更多信æ¯ï¼Œè¯·è§äº¤é›†ã€‚

补集

两个集åˆä¹Ÿå¯ä»¥ç›¸"å‡"。A 在 B 中的相对补集,写作 B − A,是属于 B çš„ã€ä½†ä¸å±žäºŽ A 的所有元素组æˆçš„集åˆã€‚ åœ¨ç‰¹å®šæƒ…å†µä¸‹ï¼Œæ‰€è®¨è®ºçš„æ‰€æœ‰é›†åˆæ˜¯ä¸€ä¸ªç»™å®šçš„全集 U çš„å­é›†ã€‚这样, U − A 称作 A çš„ç»å¯¹è¡¥é›†ï¼Œæˆ–简称补集,写作 A′。 全集 补集å¯ä»¥çœ‹ä½œä¸¤ä¸ªé›†åˆç›¸å‡ï¼Œæœ‰æ—¶ä¹Ÿç§°ä½œå·®é›†ã€‚ 举例: :
-  −  = :
-  −  = :
-  −  = \varnothing :
- è‹¥ U æ˜¯æ•´æ•°é›†ï¼Œåˆ™å¥‡æ•°çš„è¡¥é›†æ˜¯å¶æ•° 补集的基本性质: :
- A ∪ A′ = U :
- A ∩ A′ = \varnothing :
- (A′)′ = A :
- A − B = A ∩ B′ 更多信æ¯ï¼Œè¯·è§è¡¥é›†ã€‚

å…¬ç†é›†åˆè«–

把集åˆçœ‹ä½œâ€œä¸€å †æ±è¥¿â€æœƒå¾—出所謂罗素悖论。为解决罗素悖论,數學家æå‡ºå…¬ç†é›†åˆè«–。在公ç†é›†åˆè®ºä¸­ï¼Œé›†åˆæ˜¯ä¸€ä¸ªä¸åŠ å®šä¹‰çš„æ¦‚å¿µã€‚

類

在更深層的公ç†åŒ–数学中,集åˆä»…仅是一ç§ç‰¹æ®Šçš„类,是“良性类â€ï¼Œæ˜¯èƒ½å¤Ÿæˆä¸ºå…¶å®ƒç±»çš„元素的类。 类区分为两ç§ï¼šä¸€ç§æ˜¯å¯ä»¥é¡ºåˆ©è¿›è¡Œç±»è¿ç®—的“良性类â€ï¼Œæˆ‘们把这ç§â€œè‰¯æ€§ç±»â€ç§°ä¸ºé›†åˆï¼›å¦ä¸€ç§æ˜¯è¦é™åˆ¶è¿ç®—的“本性类â€ï¼Œå¯¹äºŽæœ¬æ€§ç±»ï¼Œç±»è¿ç®—是并ä¸éƒ½èƒ½è¿›è¡Œçš„。 定义 ç±»A如果满足æ¡ä»¶â€œ\exists B(A\in B)â€ï¼Œåˆ™ç§°ç±»A为一个集åˆ(简称为集),记为Set(A)。å¦åˆ™ç§°ä¸ºæœ¬æ€§ç±»ã€‚ 这说明,一个集åˆå¯ä»¥ä½œä¸ºå…¶å®ƒç±»çš„元素,但一个本性类å´ä¸èƒ½æˆä¸ºå…¶å®ƒç±»çš„元素。因此å¯ä»¥ç†è§£ä¸ºâ€œæœ¬æ€§ç±»æ˜¯æœ€é«˜å±‚次的类â€ã€‚ å‚è§ï¼šå…¬ç†åŒ–æ•°å­¦ -- 类的ç†è®º -- ç½—ç´ å…¬ç†ä½“ç³» -- 集åˆä»£æ•° category:集åˆè®º category:æ•°æ®ç»“æž„ ja:é›†åˆ ko:ì§‘í•©

顺åºè¡¨

顺åºè¡¨æ˜¯åœ¨è®¡ç®—机内存中以数组的形å¼ä¿å­˜çš„线性表,是指用一组地å€è¿žç»­çš„存储å•å…ƒä¾æ¬¡å­˜å‚¨æ•°æ®å…ƒç´ çš„线性结构。

存储结构

/
- 线性表的动æ€åˆ†é…顺åºå­˜å‚¨ç»“æž„
- / #define LIST_INIT_SIZE 10 /
- 线性表存储空间的åˆå§‹åˆ†é…é‡
- / #define LIST_INCREMENT 2 /
- 线性表存储空间的分é…增é‡
- / typedef struct SqList;

基本æ“作

/
- 顺åºè¡¨ç¤ºçš„线性表的基本æ“作(12个)
- / void InitList(SqList
- L) /
- 算法2.3
- / void DestroyList(SqList
- L) void ClearList(SqList
- L) Status ListEmpty(SqList L) int ListLength(SqList L) Status GetElem(SqList L,int i,ElemType
- e) int LocateElem(SqList L,ElemType e,Status(
- compare)(ElemType,ElemType)) Status PriorElem(SqList L,ElemType cur_e,ElemType
- pre_e) Status NextElem(SqList L,ElemType cur_e,ElemType
- next_e) Status ListInsert(SqList
- L,int i,ElemType e) Status ListDelete(SqList
- L,int i,ElemType
- e) void ListTraverse(SqList L,void(
- vi)(ElemType
- )) Category:æ•°æ®ç»“æž„

链表

é“¾è¡¨æ˜¯åœ¨è®¡ç®—æœºå†…å­˜ä¸­ä»¥æŒ‡é’ˆä¿æŒäº’相连接的形å¼ä¿å­˜çš„线性表。 使用链表结构å¯ä»¥å…‹æœæ•°ç»„链表需è¦é¢„å…ˆçŸ¥é“æ•°æ®å¤§å°çš„缺点,链表结构å¯ä»¥å……åˆ†åˆ©ç”¨è®¡ç®—æœºå†…å­˜ç©ºé—´ï¼Œå®žçŽ°çµæ´»çš„内存动æ€ç®¡ç†ã€‚ä½†æ˜¯é“¾è¡¨å¤±åŽ»äº†æ•°ç»„éšæœºè¯»å–çš„ä¼˜ç‚¹ï¼ŒåŒæ—¶é“¾è¡¨ç”±äºŽå¢žåŠ äº†ç»“ç‚¹çš„æŒ‡é’ˆåŸŸï¼Œç©ºé—´å¼€é”€æ¯”è¾ƒå¤§ã€‚ 常用的链表有:å•å‘链表ã€åŒå‘链表ã€å¾ªçŽ¯é“¾è¡¨ã€‚ Category:æ•°æ®ç»“æž„ ja:線形リスト ko:ì—°ê²° 리스트

éµçµä¸²åˆ—

é“¾è¡¨æ˜¯åœ¨è®¡ç®—æœºå†…å­˜ä¸­ä»¥æŒ‡é’ˆä¿æŒäº’相连接的形å¼ä¿å­˜çš„线性表。 使用链表结构å¯ä»¥å…‹æœæ•°ç»„链表需è¦é¢„å…ˆçŸ¥é“æ•°æ®å¤§å°çš„缺点,链表结构å¯ä»¥å……åˆ†åˆ©ç”¨è®¡ç®—æœºå†…å­˜ç©ºé—´ï¼Œå®žçŽ°çµæ´»çš„内存动æ€ç®¡ç†ã€‚ä½†æ˜¯é“¾è¡¨å¤±åŽ»äº†æ•°ç»„éšæœºè¯»å–çš„ä¼˜ç‚¹ï¼ŒåŒæ—¶é“¾è¡¨ç”±äºŽå¢žåŠ äº†ç»“ç‚¹çš„æŒ‡é’ˆåŸŸï¼Œç©ºé—´å¼€é”€æ¯”è¾ƒå¤§ã€‚ 常用的链表有:å•å‘链表ã€åŒå‘链表ã€å¾ªçŽ¯é“¾è¡¨ã€‚ Category:æ•°æ®ç»“æž„ ja:線形リスト ko:ì—°ê²° 리스트

å•链表

å•å‘链表(å•链表)是链表的一ç§ï¼Œå…¶ç‰¹ç‚¹æ˜¯é“¾è¡¨çš„é“¾æŽ¥æ–¹å‘æ˜¯å•å‘的,对链表的访问è¦é€šè¿‡é¡ºåºè¯»å–从头部开始。 Image:Link.png

动æ€å•链表

å•å‘链表的数æ®ç»“æž„å¯ä»¥åˆ†ä¸ºä¸¤éƒ¨åˆ†ï¼šæ•°æ®åŸŸå’ŒæŒ‡é’ˆåŸŸï¼Œæ•°æ®åŸŸå­˜å‚¨æ•°æ®ï¼ŒæŒ‡é’ˆåŸŸæŒ‡å‘下一个储存节点的地å€ã€‚ /
- 线性表的å•链表存储结构
- / typedef struct LNodeLNode,
- LinkList; /
- 带有头结点的å•链表的基本æ“作(12个)
- / void InitList(LinkList
- L) void DestroyList(LinkList
- L) void ClearList(LinkList L) /
- 䏿”¹å˜L
- / Status ListEmpty(LinkList L) int ListLength(LinkList L) Status GetElem(LinkList L,int i,ElemType
- e) /
- 算法2.8
- / int LocateElem(LinkList L,ElemType e,Status(
- compare)(ElemType,ElemType)) Status PriorElem(LinkList L,ElemType cur_e,ElemType
- pre_e) Status NextElem(LinkList L,ElemType cur_e,ElemType
- next_e) Status ListInsert(LinkList L,int i,ElemType e) /
- 算法2.9ã€‚ä¸æ”¹å˜L
- / Status ListDelete(LinkList L,int i,ElemType
- e) /
- 算法2.10ã€‚ä¸æ”¹å˜L
- / void ListTraverse(LinkList L,void(
- vi)(ElemType)) /
- vi的形å‚类型为ElemType,与bo2-1.c中相应函数的形å‚类型ElemType&ä¸åŒ
- /

陿€å•链表

/
- çº¿æ€§è¡¨çš„é™æ€å•链表存储结构
- / #define MAX_SIZE 100 /
- 链表的最大长度
- / typedef struct component,SLinkList[MAX_SIZE]; /
- 一个数组åªç”Ÿæˆä¸€ä¸ªé™æ€é“¾è¡¨çš„基本æ“作(11个))
- / #define DestroyList ClearList // DestroyList()å’ŒClearList()çš„æ“作是一样的 void InitList(SLinkList L) void ClearList(SLinkList L) Status ListEmpty(SLinkList L) int ListLength(SLinkList L) Status GetElem(SLinkList L,int i,ElemType
- e) int LocateElem(SLinkList L,ElemType e) /
- 算法2.13(有改动)
- / Status PriorElem(SLinkList L,ElemType cur_e,ElemType
- pre_e) Status NextElem(SLinkList L,ElemType cur_e,ElemType
- next_e) Status ListInsert(SLinkList L,int i,ElemType e) Status ListDelete(SLinkList L,int i,ElemType
- e) void ListTraverse(SLinkList L,void(
- vi)(ElemType)) Category:æ•°æ®ç»“æž„

åŒé“¾è¡¨

åŒå‘链表也å«åŒé“¾è¡¨ï¼Œæ˜¯é“¾è¡¨çš„一ç§ï¼Œå®ƒçš„æ¯ä¸ªæ•°æ®ç»“点中都有两个指针,分别指å‘直接åŽç»§å’Œç›´æŽ¥å‰é©±ã€‚所以,从åŒå‘链表中的任æ„一个结点开始,都å¯ä»¥å¾ˆæ–¹ä¾¿åœ°è®¿é—®å®ƒçš„å‰é©±ç»“点和åŽç»§ç»“点。一般我们都构造åŒå‘循环链表。 /
- 线性表的åŒå‘链表存储结构
- / typedef struct DuLNode DuLNode,
- DuLinkList; /
- 带头结点的åŒå‘循环链表的基本æ“作(14个)
- / void InitList(DuLinkList
- L) void DestroyList(DuLinkList
- L) void ClearList(DuLinkList L) /
- 䏿”¹å˜L
- / Status ListEmpty(DuLinkList L) int ListLength(DuLinkList L) Status GetElem(DuLinkList L,int i,ElemType
- e) int LocateElem(DuLinkList L,ElemType e,Status(
- compare)(ElemType,ElemType)) Status PriorElem(DuLinkList L,ElemType cur_e,ElemType
- pre_e) Status NextElem(DuLinkList L,ElemType cur_e,ElemType
- next_e) DuLinkList GetElemP(DuLinkList L,int i) /
- å¦åŠ 
- / Status ListInsert(DuLinkList L,int i,ElemType e) Status ListDelete(DuLinkList L,int i,ElemType
- e) void ListTraverse(DuLinkList L,void(
- visit)(ElemType)) void ListTraverseBack(DuLinkList L,void(
- visit)(ElemType)) Category:æ•°æ®ç»“æž„

散列表

散列表(也å«å“ˆå¸Œè¡¨ï¼‰ï¼Œæ˜¯æ ¹æ®å…³é”®ç å€¼ç›´æŽ¥è¿›è¡Œè®¿é—®çš„æ•°æ®ç»“构,也就是说,它通过把关键ç å€¼æ˜ å°„到表中一个ä½ç½®æ¥è®¿é—®è®°å½•,以加快查找的速度。这个映射函数å«åšæ•£åˆ—å‡½æ•°ï¼Œå­˜æ”¾è®°å½•çš„æ•°ç»„å«åšæ•£åˆ—è¡¨ã€‚ 若结构中存在关键字和K相等的记录,则必定在f(K)的存储ä½ç½®ä¸Šã€‚由此,ä¸éœ€æ¯”较便å¯ç›´æŽ¥å–得所查记录。称这个对应关系f为哈希(Hash)å‡½æ•°ï¼ŒæŒ‰è¿™ä¸ªæ€æƒ³å»ºç«‹çš„表为哈希表。对ä¸åŒçš„关键字å¯èƒ½å¾—到åŒä¸€å“ˆå¸Œåœ°å€ï¼Œå³key1≠key2,而f(key1)=f(key2),这ç§çŽ°è±¡ç§°å†²çªã€‚具有相åŒå‡½æ•°å€¼çš„关键字对该哈希函数æ¥è¯´ç§°åšåŒä¹‰è¯ã€‚综上所述,根æ®å“ˆå¸Œå‡½æ•°H(key)和处ç†å†²çªçš„æ–¹æ³•将一组关键字映象到一个有é™çš„连续的地å€é›†ï¼ˆåŒºé—´ï¼‰ä¸Šï¼Œå¹¶ä»¥å…³é”®å­—在地å€é›†ä¸­çš„“象â€ä½œä¸ºè®°å½•在表中的存储ä½ç½®ï¼Œè¿™ç§è¡¨ä¾¿ç§°ä¸ºå“ˆå¸Œè¡¨ï¼Œè¿™ä¸€æ˜ è±¡è¿‡ç¨‹ç§°ä¸ºå“ˆå¸Œé€ è¡¨æˆ–散列,所得的存储ä½ç½®ç§°å“ˆå¸Œåœ°å€æˆ–散列地å€ã€‚若对于关键字集åˆä¸­çš„任一个关键字,ç»å“ˆå¸Œå‡½æ•°æ˜ è±¡åˆ°åœ°å€é›†åˆä¸­ä»»ä½•一个地å€çš„æ¦‚率是相等的,则称此类哈希函数为å‡åŒ€(Uniform)哈希函数,这就是使关键字ç»è¿‡å“ˆå¸Œå‡½æ•°å¾—åˆ°ä¸€ä¸ªâ€œéšæœºçš„地å€â€ï¼Œä»Žè€Œå‡å°‘冲çªã€‚

常用的构造哈希函数的方法

散列函数能使对一个数æ®åºåˆ—的访问过程更加迅速有效,通过散列函数,数æ®å…ƒç´ å°†è¢«æ›´å¿«åœ°å®šä½Ç #ç›´æŽ¥å®šå€æ³•:å–关键字或关键字的æŸä¸ªçº¿æ€§å‡½æ•°å€¼ä¸ºå“ˆå¸Œåœ°å€ã€‚å³H(key)=key或H(key) = a•key + b,其中aå’Œb为常数(这ç§å“ˆå¸Œå‡½æ•°å«åšè‡ªèº«å‡½æ•°ï¼‰ #æ•°å­—åˆ†æžæ³• #平方å–中法 #æŠ˜å æ³• #éšæœºæ•°æ³• #除留余数法:å–关键字被æŸä¸ªä¸å¤§äºŽå“ˆå¸Œè¡¨è¡¨é•¿m的数pé™¤åŽæ‰€å¾—的余数为哈希地å€ã€‚å³ H(key) = key MOD p, p<=m。ä¸ä»…å¯ä»¥å¯¹å…³é”®å­—ç›´æŽ¥å–æ¨¡ï¼Œä¹Ÿå¯åœ¨æŠ˜å ã€å¹³æ–¹å–中等è¿ç®—之åŽå–模。对p的选择很é‡è¦ï¼Œä¸€èˆ¬å–素数或m,若p选的ä¸å¥½ï¼Œå®¹æ˜“产生åŒä¹‰è¯ã€‚

处ç†å†²çªçš„æ–¹æ³•

#å¼€æ”¾å®šå€æ³•ï¼›Hi=(H(key) + di) MOD m, i=1,2,…, k(k<=m-1),其中H(key)为哈希函数,m为哈希表长,di为增é‡åºåˆ—ï¼Œå¯æœ‰ä¸‹åˆ—三ç§å–法: ##di=1,2,3,…, m-1ï¼Œç§°çº¿æ€§æŽ¢æµ‹å†æ•£åˆ—ï¼› ##di=12, -12, 22,-22, 32, …, ±k2,(k<=m/2)ç§°äºŒæ¬¡æŽ¢æµ‹å†æ•£åˆ—ï¼› ##di=ä¼ªéšæœºæ•°åºåˆ—ï¼Œç§°ä¼ªéšæœºæŽ¢æµ‹å†æ•£åˆ—。 #å†å“ˆå¸Œæ³•:Hi=RHi(key), i=1,2,…,k RHi凿˜¯ä¸åŒçš„哈希函数,å³åœ¨åŒä¹‰è¯äº§ç”Ÿåœ°å€å†²çªæ—¶è®¡ç®—å¦ä¸€ä¸ªå“ˆå¸Œå‡½æ•°åœ°å€ï¼Œç›´åˆ°å†²çªä¸å†å‘ç”Ÿï¼Œè¿™ç§æ–¹æ³•䏿˜“产生“èšé›†â€ï¼Œä½†å¢žåŠ äº†è®¡ç®—æ—¶é—´ã€‚ #é“¾åœ°å€æ³•(拉链法) #建立一个公共溢出区

æ’å…¥

删除元素

查找的性能分æž

哈希表的查找过程基本上和造表过程相åŒã€‚一些关键ç å¯é€šè¿‡å“ˆå¸Œå‡½æ•°è½¬æ¢çš„地å€ç›´æŽ¥æ‰¾åˆ°ï¼Œå¦ä¸€äº›å…³é”®ç åœ¨å“ˆå¸Œå‡½æ•°å¾—到的地å€ä¸Šäº§ç”Ÿäº†å†²çªï¼Œéœ€è¦æŒ‰å¤„ç†å†²çªçš„æ–¹æ³•进行查找。在介ç»çš„三ç§å¤„ç†å†²çªçš„æ–¹æ³•中,产生冲çªåŽçš„æŸ¥æ‰¾ä»ç„¶æ˜¯ç»™å®šå€¼ä¸Žå…³é”®ç è¿›è¡Œæ¯”较的过程。所以,对哈希表查找效率的é‡åº¦ï¼Œä¾ç„¶ç”¨å¹³å‡æŸ¥æ‰¾é•¿åº¦æ¥è¡¡é‡ã€‚ 查找过程中,关键ç çš„æ¯”较次数,å–决于产生冲çªçš„多少,产生的冲çªå°‘,查找效率就高,产生的冲çªå¤šï¼ŒæŸ¥æ‰¾æ•ˆçŽ‡å°±ä½Žã€‚å› æ­¤ï¼Œå½±å“产生冲çªå¤šå°‘çš„å› ç´ ï¼Œä¹Ÿå°±æ˜¯å½±å“æŸ¥æ‰¾æ•ˆçŽ‡çš„å› ç´ ã€‚å½±å“产生冲çªå¤šå°‘有以下三个因素: #哈希函数是å¦å‡åŒ€ï¼› #处ç†å†²çªçš„æ–¹æ³•ï¼› #哈希表的装填因å­ã€‚ 哈希表的装填因å­å®šä¹‰ä¸ºï¼šÎ±= 填入表中的元素个数 / 哈希表的长度 α是哈希表装满程度的标志因å­ã€‚ç”±äºŽè¡¨é•¿æ˜¯å®šå€¼ï¼ŒÎ±ä¸Žâ€œå¡«å…¥è¡¨ä¸­çš„å…ƒç´ ä¸ªæ•°â€æˆæ­£æ¯”,所以,α越大,填入表中的元素较多,产生冲çªçš„å¯èƒ½æ€§å°±è¶Šå¤§ï¼›Î±è¶Šå°ï¼Œå¡«å…¥è¡¨ä¸­çš„元素较少,产生冲çªçš„å¯èƒ½æ€§å°±è¶Šå°ã€‚ å®žé™…ä¸Šï¼Œå“ˆå¸Œè¡¨çš„å¹³å‡æŸ¥æ‰¾é•¿åº¦æ˜¯è£…å¡«å› å­Î±çš„å‡½æ•°ï¼Œåªæ˜¯ä¸åŒå¤„ç†å†²çªçš„æ–¹æ³•有ä¸åŒçš„函数。以下给出几ç§ä¸åŒå¤„ç†å†²çªæ–¹æ³•çš„å¹³å‡æŸ¥æ‰¾é•¿åº¦ï¼š

å‚è§ï¼š


- æ•°æ®ç»“æž„ category:æ•°æ®ç»“æž„ ja:ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ル

哈希表

散列表(也å«å“ˆå¸Œè¡¨ï¼‰ï¼Œæ˜¯æ ¹æ®å…³é”®ç å€¼ç›´æŽ¥è¿›è¡Œè®¿é—®çš„æ•°æ®ç»“构,也就是说,它通过把关键ç å€¼æ˜ å°„到表中一个ä½ç½®æ¥è®¿é—®è®°å½•,以加快查找的速度。这个映射函数å«åšæ•£åˆ—å‡½æ•°ï¼Œå­˜æ”¾è®°å½•çš„æ•°ç»„å«åšæ•£åˆ—è¡¨ã€‚ 若结构中存在关键字和K相等的记录,则必定在f(K)的存储ä½ç½®ä¸Šã€‚由此,ä¸éœ€æ¯”较便å¯ç›´æŽ¥å–得所查记录。称这个对应关系f为哈希(Hash)å‡½æ•°ï¼ŒæŒ‰è¿™ä¸ªæ€æƒ³å»ºç«‹çš„表为哈希表。对ä¸åŒçš„关键字å¯èƒ½å¾—到åŒä¸€å“ˆå¸Œåœ°å€ï¼Œå³key1≠key2,而f(key1)=f(key2),这ç§çŽ°è±¡ç§°å†²çªã€‚具有相åŒå‡½æ•°å€¼çš„关键字对该哈希函数æ¥è¯´ç§°åšåŒä¹‰è¯ã€‚综上所述,根æ®å“ˆå¸Œå‡½æ•°H(key)和处ç†å†²çªçš„æ–¹æ³•将一组关键字映象到一个有é™çš„连续的地å€é›†ï¼ˆåŒºé—´ï¼‰ä¸Šï¼Œå¹¶ä»¥å…³é”®å­—在地å€é›†ä¸­çš„“象â€ä½œä¸ºè®°å½•在表中的存储ä½ç½®ï¼Œè¿™ç§è¡¨ä¾¿ç§°ä¸ºå“ˆå¸Œè¡¨ï¼Œè¿™ä¸€æ˜ è±¡è¿‡ç¨‹ç§°ä¸ºå“ˆå¸Œé€ è¡¨æˆ–散列,所得的存储ä½ç½®ç§°å“ˆå¸Œåœ°å€æˆ–散列地å€ã€‚若对于关键字集åˆä¸­çš„任一个关键字,ç»å“ˆå¸Œå‡½æ•°æ˜ è±¡åˆ°åœ°å€é›†åˆä¸­ä»»ä½•一个地å€çš„æ¦‚率是相等的,则称此类哈希函数为å‡åŒ€(Uniform)哈希函数,这就是使关键字ç»è¿‡å“ˆå¸Œå‡½æ•°å¾—åˆ°ä¸€ä¸ªâ€œéšæœºçš„地å€â€ï¼Œä»Žè€Œå‡å°‘冲çªã€‚

常用的构造哈希函数的方法

散列函数能使对一个数æ®åºåˆ—的访问过程更加迅速有效,通过散列函数,数æ®å…ƒç´ å°†è¢«æ›´å¿«åœ°å®šä½Ç #ç›´æŽ¥å®šå€æ³•:å–关键字或关键字的æŸä¸ªçº¿æ€§å‡½æ•°å€¼ä¸ºå“ˆå¸Œåœ°å€ã€‚å³H(key)=key或H(key) = a•key + b,其中aå’Œb为常数(这ç§å“ˆå¸Œå‡½æ•°å«åšè‡ªèº«å‡½æ•°ï¼‰ #æ•°å­—åˆ†æžæ³• #平方å–中法 #æŠ˜å æ³• #éšæœºæ•°æ³• #除留余数法:å–关键字被æŸä¸ªä¸å¤§äºŽå“ˆå¸Œè¡¨è¡¨é•¿m的数pé™¤åŽæ‰€å¾—的余数为哈希地å€ã€‚å³ H(key) = key MOD p, p<=m。ä¸ä»…å¯ä»¥å¯¹å…³é”®å­—ç›´æŽ¥å–æ¨¡ï¼Œä¹Ÿå¯åœ¨æŠ˜å ã€å¹³æ–¹å–中等è¿ç®—之åŽå–模。对p的选择很é‡è¦ï¼Œä¸€èˆ¬å–素数或m,若p选的ä¸å¥½ï¼Œå®¹æ˜“产生åŒä¹‰è¯ã€‚

处ç†å†²çªçš„æ–¹æ³•

#å¼€æ”¾å®šå€æ³•ï¼›Hi=(H(key) + di) MOD m, i=1,2,…, k(k<=m-1),其中H(key)为哈希函数,m为哈希表长,di为增é‡åºåˆ—ï¼Œå¯æœ‰ä¸‹åˆ—三ç§å–法: ##di=1,2,3,…, m-1ï¼Œç§°çº¿æ€§æŽ¢æµ‹å†æ•£åˆ—ï¼› ##di=12, -12, 22,-22, 32, …, ±k2,(k<=m/2)ç§°äºŒæ¬¡æŽ¢æµ‹å†æ•£åˆ—ï¼› ##di=ä¼ªéšæœºæ•°åºåˆ—ï¼Œç§°ä¼ªéšæœºæŽ¢æµ‹å†æ•£åˆ—。 #å†å“ˆå¸Œæ³•:Hi=RHi(key), i=1,2,…,k RHi凿˜¯ä¸åŒçš„哈希函数,å³åœ¨åŒä¹‰è¯äº§ç”Ÿåœ°å€å†²çªæ—¶è®¡ç®—å¦ä¸€ä¸ªå“ˆå¸Œå‡½æ•°åœ°å€ï¼Œç›´åˆ°å†²çªä¸å†å‘ç”Ÿï¼Œè¿™ç§æ–¹æ³•䏿˜“产生“èšé›†â€ï¼Œä½†å¢žåŠ äº†è®¡ç®—æ—¶é—´ã€‚ #é“¾åœ°å€æ³•(拉链法) #建立一个公共溢出区

æ’å…¥

删除元素

查找的性能分æž

哈希表的查找过程基本上和造表过程相åŒã€‚一些关键ç å¯é€šè¿‡å“ˆå¸Œå‡½æ•°è½¬æ¢çš„地å€ç›´æŽ¥æ‰¾åˆ°ï¼Œå¦ä¸€äº›å…³é”®ç åœ¨å“ˆå¸Œå‡½æ•°å¾—到的地å€ä¸Šäº§ç”Ÿäº†å†²çªï¼Œéœ€è¦æŒ‰å¤„ç†å†²çªçš„æ–¹æ³•进行查找。在介ç»çš„三ç§å¤„ç†å†²çªçš„æ–¹æ³•中,产生冲çªåŽçš„æŸ¥æ‰¾ä»ç„¶æ˜¯ç»™å®šå€¼ä¸Žå…³é”®ç è¿›è¡Œæ¯”较的过程。所以,对哈希表查找效率的é‡åº¦ï¼Œä¾ç„¶ç”¨å¹³å‡æŸ¥æ‰¾é•¿åº¦æ¥è¡¡é‡ã€‚ 查找过程中,关键ç çš„æ¯”较次数,å–决于产生冲çªçš„多少,产生的冲çªå°‘,查找效率就高,产生的冲çªå¤šï¼ŒæŸ¥æ‰¾æ•ˆçŽ‡å°±ä½Žã€‚å› æ­¤ï¼Œå½±å“产生冲çªå¤šå°‘çš„å› ç´ ï¼Œä¹Ÿå°±æ˜¯å½±å“æŸ¥æ‰¾æ•ˆçŽ‡çš„å› ç´ ã€‚å½±å“产生冲çªå¤šå°‘有以下三个因素: #哈希函数是å¦å‡åŒ€ï¼› #处ç†å†²çªçš„æ–¹æ³•ï¼› #哈希表的装填因å­ã€‚ 哈希表的装填因å­å®šä¹‰ä¸ºï¼šÎ±= 填入表中的元素个数 / 哈希表的长度 α是哈希表装满程度的标志因å­ã€‚ç”±äºŽè¡¨é•¿æ˜¯å®šå€¼ï¼ŒÎ±ä¸Žâ€œå¡«å…¥è¡¨ä¸­çš„å…ƒç´ ä¸ªæ•°â€æˆæ­£æ¯”,所以,α越大,填入表中的元素较多,产生冲çªçš„å¯èƒ½æ€§å°±è¶Šå¤§ï¼›Î±è¶Šå°ï¼Œå¡«å…¥è¡¨ä¸­çš„元素较少,产生冲çªçš„å¯èƒ½æ€§å°±è¶Šå°ã€‚ å®žé™…ä¸Šï¼Œå“ˆå¸Œè¡¨çš„å¹³å‡æŸ¥æ‰¾é•¿åº¦æ˜¯è£…å¡«å› å­Î±çš„å‡½æ•°ï¼Œåªæ˜¯ä¸åŒå¤„ç†å†²çªçš„æ–¹æ³•有ä¸åŒçš„函数。以下给出几ç§ä¸åŒå¤„ç†å†²çªæ–¹æ³•çš„å¹³å‡æŸ¥æ‰¾é•¿åº¦ï¼š

å‚è§ï¼š


- æ•°æ®ç»“æž„ category:æ•°æ®ç»“æž„ ja:ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ル

Iwangorod

Iwangorod (russisch Ивангород; estnisch Jaanilinn) ist eine Stadt in der Oblast Leningrad in Russland, 159 km westlich von Sankt Petersburg.

Geografie

Iwangorod hat 11.200 Einwohner (2004) und eine Ausdehnung von 7,7km². Die Stadt liegt am rechten Ufer der Narva, die hier die Grenze zwischen Russland und Estland bildet. Von 1920 – 1940 gehörte sie unter dem Namen Jaanilinn zu Estland.
Während der Sowjetzeit waren Narva und Iwangorod Zwillingsstädte, die in verschiedenen Unionsrepubliken lagen. Heute verläuft hier die Außengrenze der Europäischen Union.
Seit 1954 hat Iwangorod Stadtrecht.

Sehenswürdigkeit

1954 Die bedeutendste Sehenswürdigkeit ist die Festung Iwangorod aus der Zeit Iwans III., die am Ufer der Narva der estnischen Hermannsfeste gegenüberliegt.

Verkehr

Die Stadt liegt an der Eisenbahnstrecke Tallinn – Sankt Petersburg.

Weblinks


- [http://www.ivangorod.ru/ offizielle Webseite der Stadt] (russisch)
- [http://www.uni-tuebingen.de/egoinfo/beispstadt.html#3 Geteilte Grenzstädte]
- [http://www.berlinonline.de/berliner-zeitung/archiv/.bin/dump.fcgi/2004/0428/blickpunkt/0001/ Berliner Zeitung vom 28. April 2004] Kategorie:Ort in Russland ko:ì´ë°˜ê³ ë¡œíЏ

narty we francji encyklopedia od¿ywki hoteles en Praga appartamenti bruxelles










































:: RELATED NEWS ::



Toongabbie
Toongabbie is a suburb in Sydney, Australia, and is notable for being one of the the third settlement set up after the British occupation of Australia in 1788. Toongabbie is situated approximately 26km (16 miles) west of the central business district of Sydney. Toongabbie is roughly divided by the main western railway line over two suburb in the south of Sydney, in the state of New South Wales, Australia. It is located in the Sutherland Shire, and contains some industrial areas along the main Taren Point Road.

External links

Category:Incomplete Sydney suburbs suburb of Sydney, in the state of New South Wales, Australia. Tamarama has a small but perfectly formed ocean beach immediately south of the world famous Bondi Beach. Known affectionately as Glamarama by the locals, it is a beach where the seriously beautiful come to sunbathe and swim. Because of its deep water, small size and easterly
All Rights Reserved 2005 wikimiki.org