代码改变世界

1. Java数组与内存控制

2012-10-04 15:41 by jiutianhe, 177 阅读, 0 推荐, 收藏, 编辑
摘要:一、Java数组初始化Java数组是静态的,即当数组被初始化之后,该数组的长度是不可变的。Java数组使用之前必须先对数组对象进行初始化,所谓初始化,就是为数组的所有元素分配内存空间,并为每个数组元素指定初始值。 Java基本类型数组的两种初始化方式静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度。动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。不要同时使用静态初始化和动态初始化,也就是说,不要在进行数组初始化时,既指定数组的长度,也为每个数组元素分配初始值。Java的数组是静态的,一旦数组初始化完成,数组元素的内存空间分配即结束,程序只能改变 阅读全文

单链表是否有环和两个单链表是否相交

2012-10-04 11:04 by jiutianhe, 188 阅读, 0 推荐, 收藏, 编辑
摘要:1、如何判断一个链表是不是有环? 2、如果链表为存在环,如何找到环的入口点?3、判断两个单链表是否相交,如果相交,给出相交的第一个点(两个链表都不存在环)。1、解答:判断链表是否存在环,办法为:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)程序如下:bool IsExitsLoop(slist *head) { slist *slow = head, *fast = head;while ( fast & 阅读全文

1.排序算法--选择排序和堆排序

2012-09-18 21:03 by jiutianhe, 208 阅读, 0 推荐, 收藏, 编辑
摘要:一.选择排序JAVA代码://泛型选择排序 public static <T extends Comparable<? super T>> void selecttionSort(T[] arr){ int smallIndex; int n=arr.length; T temp; for (int i = 0; i < n-1; i++) { smallIndex=i; for (int j = i+1; j < n; j++) { if (arr[j].compareTo(arr[smallIndex])<0) { smallIndex=j; } 阅读全文

二分查找

2012-09-15 20:50 by jiutianhe, 111 阅读, 0 推荐, 收藏, 编辑
摘要:C语言版:#include<stdio.h>int BinarySearch(int *arr,int left,int right,int elem){ int min=left,max=right,mid; while(min<max-1) { mid=min+(max-min)/2; if(arr[mid]<=elem) { min=mid; }else { max=mid; } } if (arr[max]==elem) { ... 阅读全文

2.排序--插入排序和希尔排序

2012-09-14 13:14 by jiutianhe, 128 阅读, 0 推荐, 收藏, 编辑
摘要:C语言版本:#include<stdio.h>void insertSort(int a[],int n){ for(int i=0;i<n;i++) { int temp=a[i]; int j=0; for(j=i;j>0&&a[j-1]>temp;j--) { a[j]=a[j-1]; } a[j]=temp; }}int main(int argc, char *argv[]){ int n; while(scanf("%d",&n)!=EOF) ... 阅读全文

char * const p,char const *p,char *str,char str[]的相关问题

2012-09-13 18:21 by jiutianhe, 139 阅读, 0 推荐, 收藏, 编辑
摘要:char const *p和const char *p是一个概念.char * const p; p为指向字符变量的指针,地址不变,地址内容可变const char *p; p为指向字符变量的指针,地址可变,地址内容不变*在const前表示指针为常量,只能初始化,初始化后就不能再指向别的地址,但是可以改变指针指向的变量的值。const在*前面,表示指针指向的值为常量,但是指针可以指向不同的变量。程序1:#include<iostream>using namespace std;char *str(){char *str="hejk ";return str;}v 阅读全文

在一个词典中找出所有的变位词

2012-09-13 17:25 by jiutianhe, 609 阅读, 1 推荐, 收藏, 编辑
摘要:编程珠玑题:java实现package program.pearls;import java.io.*;import java.util.*;import java.util.Map.Entry;public class DictionaryAnagram { /** * 在一个词典中找出所有的变位词, * 例如 pots stop tops互为变位词, * 因为一个单词可以通过改变其他单词中字母的顺序得到其他单词。 */ /** 我们可以把首先遇到的单词,进行排序。 例如pans排序后变为anps,我们现在就把anps作为单词pans的标记, 然后当在遇到snap,也将anps... 阅读全文

KMP字符串匹配

2012-09-13 17:22 by jiutianhe, 126 阅读, 0 推荐, 收藏, 编辑
摘要:java版本:package util;public class KMPStringMatch { //KMP字符串匹配 private int[] getNext(String T){//T为模式串 int[] next=new int[T.length()]; int j=1;// int k=0;// next[0]=-1; next[1]=0; while (j<T.length()-1) { if (T.charAt(j)==T.charAt(k)) { next[j+1]=k+1; j++; k++; } else if (k==0) { ... 阅读全文

3.排序--快速排序

2012-09-13 17:12 by jiutianhe, 350 阅读, 0 推荐, 收藏, 编辑
摘要:C语言版本:/*快速排序 2012.2.25*/#include <stdio.h>int partion(int a[],int low,int high) //返回枢轴位置{ int i=low; int j=high; int pivot=a[low]; while(i<j) { while(i<j&&a[j]>=pivot) { --j; } a[i]=a[j]; while(i<j&&a[i]<=pivot) { ++i;... 阅读全文

TCP协议三次握手过程分析

2012-09-13 16:29 by jiutianhe, 136 阅读, 0 推荐, 收藏, 编辑
摘要:TCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SY 阅读全文