右击开首->属性->起先菜单->自定义>点击运行命令(选拔)->确定

常用的键盘key值  ,收录下
  Backspace->8  
  Tab->9   
  enter->13  
  Pause->19  
  CapsLock->20  
  Esc->27  
  Space->32  
  PageUp->33  
  PageDown->34  
  End->35  
  Home->36  
  LeftArrow->37  
  UpArrow->38  
  RightArrow->39  
  DownArrow->40  
  PrintScrn->44  
  Insert->45  
  Delete->46  
  0->48  
  1->49  
  2->50  
  3->51  
  4->52  
  5->53  
  6->54  
  7->55  
  8->56  
  9->57  
  A->65  
  B->66  
  C->67  
  D->68  
  E->69  
  F->70  
  G->71  
  H->72  
  I->73  
  J->74  
  K->75  
  L->76  
  M->77  
  N->78  
玩转算法面试,window7系统怎么找到初阶运行命令。  O->79  
  P->80  
  Q->81  
  R->82  
  S->83  
  T->84  
  U->85  
  V->86  
  W->87  
  X->88  
  y->89  
  Z->90  
  LWin->91  
  RWin->92  
  PopMenu->93  
   
  NumPad0->96  
  NumPad1->97  
  NumPad2->98  
  NumPad3->99  
  NumPad4->100  
  NumPad5->101  
  NumPad6->102  
  NumPad7->103  
  NumPad8->104  
  NumPad9->105  
  NumPad*->106  
  NumPad+->107  
  NumPad–>109  
  NumPad.->110  
  NumPad/->111  
  F1->112  
  F2->113  
  F3->114  
  F4->115  
  F5->116  
  F6->117  
  F7->118  
  F8->119  
  F9->120  
  F10->121  
  F11->122  
  F12->123  
  F13->124  
  F14->125  
  F15->126  
  F16->127  
  F17->128  
  F18->129  
  F19->130  
  F20->131  
  F21->132  
  F22->133  
  F23->134  
  F24->135  
  NumLock->144  
  ScrollLock->145  
  ;->186  
  ,->188  
  .->190  
  /->191  
  `->192  
澳门金沙国际,  [->219  
  \->220  
  ]->221  
  ‘->222

应网友们的渴求,前些天一上班就下载了 Slickedit
的新星版本,分析了一下一碗水端平复破解!

在链表中穿针引线

链表和数组都是线性结构,可是链表和数组的差异在于数组可以随便的对于数据进行访问。给出索引。可以以O(1)的大运复杂度急速访问到该因素。
链表只可以从头指针初步。

next指针指向何地?

206. Reverse Linked List

反转一个链表

链表反转

无法更改链表值。操作每个节点的next指针。
5的指针指向空的。变成指向4的。

next改变示意图

把1指向NUll以前要保留next指针

加上pre指针保存上一个节点

// 时间复杂度: O(n)
// 空间复杂度: O(1)
class Solution {
public:
    ListNode* reverseList(ListNode* head) {

        ListNode* pre = NULL;
        ListNode* cur = head;
        while( cur != NULL ){
            ListNode* next = cur->next;
            cur->next = pre;
            pre = cur;
            cur = next;
        }

        return pre;
    }
};

92. Reverse Linked List II

反转一个链表从m到n的要素。

  • 如对于链表 1->2->3->4->5->NULL, m = 2 , n = 4
  • 则赶回链表 1->4->3->2->5->NULL
    • m和n超越链表范围怎么做?
    • m > n 怎么办?

翻转m到n的元素。

Slickedit x32位的破解上次就提供了,现在再充实x64位的破解。

测试链表程序。

写按照数组创建链表和打印链表多少个函数

/// LinkedList Test Helper Functions
ListNode* createLinkedList(int arr[], int n){

    if( n == 0 )
        return NULL;

    ListNode* head = new ListNode(arr[0]);
    ListNode* curNode = head;
    for( int i = 1 ; i < n ; i ++ ){
        curNode->next = new ListNode(arr[i]);
        curNode = curNode->next;
    }

    return head;
}

void printLinkedList(ListNode* head){

    ListNode* curNode = head;
    while( curNode != NULL ){
        cout << curNode->val << " -> ";
        curNode = curNode->next;
    }

    cout<<"NULL"<<endl;

    return;
}

void deleteLinkedList(ListNode* head){

    ListNode* curNode = head;
    while( curNode != NULL ){
        ListNode* delNode = curNode;
        curNode = curNode->next;
        delete delNode;
    }

    return;
}

main.cpp:

int main(){

    int arr[] = {1, 2, 3, 4, 5};
    int n = sizeof(arr)/sizeof(int);

    ListNode* head = createLinkedList(arr, n);
    printLinkedList(head);

    ListNode* head2 = Solution().reverseList(head);
    printLinkedList(head2);

    deleteLinkedList(head2);

    return 0;
}

运行结果

83. Remove Duplicates from Sorted List

交由一个逐步链表,删除其中拥有重复元素,使得各样元素只保留两次。

  • 如 1->1->2,返回1->2
  • 如 1->1->2->3->3,返回1->2->3

86. Partition List

付出一个链表以及一个数x,将链表重新整理,使得小于x的要素在前;大于等于x的元素在后。

  • 如 1->4->3->2->5->2,x=3
  • 返回 1->2->2->4->3->5

328. Odd Even Linked List

交付一个链表,将链表重新整理,使得所有索引为奇数的节点排在索引为偶数的节点前边。

  • 如 1->2->3->4->5->NULL
  • 返回 1->3->5->2->4->NULL
  • 首先个节点的目录为1
  • 奇数索引的节点和偶数索引的节点在重新整理后要保持相对顺序。

2. Add Two Numbers

交给五个非空链表,表示多个非负整数。其中每一个平头的诸位数字以逆序存储,重临那七个整数相加所代表的链表。

  • 如 342 + 465 = 807
  • 则给出 2->4->3 和 5->6->4,返回7->0->8

数字中是或不是有内置的0。(除0以外,没有前置0)
负数?

445. Add Two Numbers II

提交五个非空链表,表示几个非负整数。其中每一个整数的诸位数字以顺序存储,重临那多少个整数相加所表示的链表。

  • 如 342 + 465 = 807
  • 则给出 3->4->2 和 4->6->5,返回8->0->7

假使不允许修改输入的链表呢?

接纳匡助数据结构

下载链接如下:

设立链表的虚拟头结点

203. Remove Linked List Elements

在链表中删除值为val的有所节点


  • 1->2->6->3->4->5->6->NULL,需要删除值为6的节点
  • 返回 1->2->3->4->5->NULL

去除节点

该逻辑对删除最终一个元素如故适用

该逻辑对删除第三个元素不适用

// 不使用虚拟头结点
class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {

        while( head != NULL && head->val == val ){

            ListNode* node = head;
            head = head->next;
            delete node;
        }

        if( head == NULL )
            return head;

        ListNode* cur = head;
        while( cur->next != NULL ){

            if( cur->next->val == val ){
                ListNode* delNode = cur->next;
                cur->next = delNode->next;
                delete delNode;
                //delNode -> next = NULL;
            }
            else
                cur = cur->next;
        }

        return head;
    }
};

虚拟头结点

切切实实贯彻:

// 使用虚拟头结点
class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {

        ListNode* dummyHead = new ListNode(0);
        dummyHead->next = head;

        ListNode* cur = dummyHead;
        while( cur->next != NULL ){

            if( cur->next->val == val ){
                ListNode* delNode = cur->next;
                cur->next = delNode->next;
                delete delNode;
            }
            else
                cur = cur->next;
        }

        ListNode* retNode = dummyHead->next;
        delete dummyHead;

        return retNode;
    }
};

int main() {

    int arr[] = {1, 2, 6, 3, 4, 5, 6};
    int n = sizeof(arr)/sizeof(int);

    ListNode* head = createLinkedList(arr, n);
    printLinkedList(head);

    Solution().removeElements( head, 6);
    printLinkedList(head);

    deleteLinkedList( head );

    return 0;
}

82. Remove Duplicates from Sorted List II

给定一个静止链表,将中间有重新的元素全部刨除。

  • 如1->2->3->3->4->4->5,返回1->2->5
  • 如1->1->1->2->3,返回2->3

21. Merge Two Sorted Lists

merge八个不变的链表

SlickEdit v16.0.2 win32 Crack
Download

复杂的链表操作

24. Swap Nodes in Pairs

给定一个链表,对于每七个相邻的节点,交流其岗位。

  • 如:链表为 1->2->3->4->NULL
  • 返回:2->1->4->3->NULL
  • 不得不对节点开展操作,无法修改节点的值

虚拟头结点

虚拟头结点

next指针调整

基本在于成立多少个指针预先保留。

class Solution {
public:
    ListNode* swapPairs(ListNode* head) {

        ListNode* dummyHead = new ListNode(0);
        dummyHead->next = head;

        ListNode* p = dummyHead;
        while( p->next && p->next->next ){
            ListNode* node1 = p->next;
            ListNode* node2 = node1->next;
            ListNode* next = node2->next;
            node2->next = node1;
            node1->next = next;
            p->next = node2;
            p = node1;
        }

        ListNode* retHead = dummyHead->next;
        delete dummyHead;

        return retHead;
    }
};

int main() {

    int arr[] = {1, 2, 3, 4};
    int n = sizeof(arr)/sizeof(int);

    ListNode* head = createLinkedList(arr, n);
    printLinkedList(head);

    head = Solution().swapPairs( head );
    printLinkedList(head);

    deleteLinkedList(head);

    return 0;
}

沉凝:行不行不要next指针?

25. Reverse Nodes in k-Group

给定一个链表,每k个节点为一组,反转每一组的k个节点。k为正整数且小于等于链表长度。尽管链表长度不是k的平头倍,剩余部分不要求展开反转。如:
1->2->3->4->5->NULL

  • 若 k = 2,则结果为:2->1->4->3->5->NULL
  • 若 k = 3,则结果为:3->2->1->4->5->NULL

147. Insertion Sort List

为一个链表举行插入排序

148. Sort List

写一个排序算法,用O(nlogn)的时刻复杂度为一个链表举行排序

归并排序不须要使用数组索引:自底向上。

SlickEdit v16.0.2 win64 Crack
Download

不仅仅是介绍

237. Delete Node in a Linked List

给定链表中的一个节点,删除该节点

class Solution {
public:
    void deleteNode(ListNode* node) {

    }
};

3赋值上4,然后把4的next保存。让第四个4指向第三个四的next

3赋值上4,然后把4的next保存。让首个4指向第四个四的next

class Solution {
public:
    void deleteNode(ListNode* node) {

        assert(node != NULL && node->next != NULL);

        node->val = node->next->val;
        ListNode* delNode = node->next;
        node->next = delNode->next;

        delete delNode;

        return;
    }
};

特种情状改变节点的值来落实大家须求的效果。

 

双指针技术

19. Remove Nth Node From End of List

给定一个链表,删除倒数第n个节点

  • 如:1->2->3->4->5->NULL, n = 2
  • 返回:1->2->3->5

n从0计依然从1计
n非法,负数或者超过链表长度怎么着处理(有限支撑n合法)

解法1:先遍历三次总计链表长度;再遍历四遍删除倒数第n个节点
遍历两次链表。能或不能只遍历一次链表?

pq长度固定

切切实实已毕:

// 先记录链表总长度
// 需要对链表进行两边遍历
class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {

        ListNode* dummyHead = new ListNode(0);
        dummyHead->next = head;

        int length = 0;
        for(ListNode* cur = dummyHead->next ; cur != NULL ; cur = cur->next )
            length ++;
        //cout<<length<<endl;

        int k = length - n;
        assert( k >= 0 );
        ListNode* cur = dummyHead;
        for( int i = 0 ; i < k ; i ++ )
            cur = cur -> next;

        ListNode* delNode = cur->next;
        cur->next = delNode->next;
        delete delNode;

        ListNode* retNode = dummyHead->next;
        delete dummyHead;
        return retNode;
    }
};

动用双指南针:

// 使用双指针, 对链表只遍历了一遍
class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {

        ListNode* dummyHead = new ListNode(0);
        dummyHead->next = head;

        ListNode* p = dummyHead;
        ListNode* q = dummyHead;
        for( int i = 0 ; i < n + 1 ; i ++ ){
            assert(q);
            q = q->next;
        }

        while( q ){
            p = p->next;
            q = q->next;
        }

        ListNode* delNode = p->next;
        p->next = delNode->next;
        delete delNode;

        ListNode* retNode = dummyHead->next;
        delete dummyHead;

        return retNode;
    }
};

61. Rotate List

给定一个链表,让这几个链表向右旋转k位。其中k为非负数。

  • 如:1->2->3->4->5->NULL, k = 2
  • 首先次旋转:5->1->2->3->4->NULL
  • 其次次旋转:4->5->1->2->3->NULL

143. Reorder List

给定一个链表 L(0) -> L(1) -> L(2) -> … -> L(n-1) ->
L(n)
将其成为 L(0) -> L(n) -> L(1) -> L(n-1) -> L(2) ->
L(n-2)…
的形式

  • 链表无法轻易访问数据,怎么着赢得中间的因素?
  • 三回遍历?四回遍历?

234. Palindrome Linked List

给一个链表,判断那个链表是不是为回文(正看反看)链表。

  • 是或不是使用O(1)的长空复杂度解决问题?

还要,我把我分析Slickedit 当中的类的接轨和派生的类的关联发表如下:

CategoryControlItem
CategoryControlSection
CategoryControl
FormattedText
RTFFormat -> FormattedText
HTMLFormat -> FormattedText
FileBitmapMgr -> IFileBitmapMgr
FLMInstanceData
HotfixFindThread -> VSTHREAD
LWMark
SEHandle@slickedit -> SEMemory@slickedit
QuickSwitchOpenFilesSection -> CategoryControlSection
QuickSwitchToolWindowSection -> CategoryControlSection
QuickSwitchToolWindowItem -> CategoryControlItem
QuickSwitchFileItem -> CategoryControlItem
QuickSwitchWindow
SEFileLanguageMap
SELangCallbackMgr
SEPerFileData
SysConfig
VSSEARCHPOS_editor -> VSSEARCHPOS
StreamLWMark -> LWMark
WatchedFileInfoMgr -> IWatchedFileInfoMgr
btStoredObject
btStoredRecord -> btStoredObject
PipDB
PipSendThread -> VSTHREAD
VSSAX2Parser -> SAX2XMLReaderImpl@xercesc_3_1  ->
XMemory@xercesc_3_1  -> SAX2XMLReader@xercesc_3_1  ->
XMLDocumentHandler@xercesc_3_1  -> XMLErrorReporter@xercesc_3_1 
-> XMLEntityHandler@xercesc_3_1  ->
DocTypeHandler@xercesc_3_1
VSSAX2Parser -> SAX2XMLReaderImpl@xercesc_3_1  ->
XMemory@xercesc_3_1  -> SAX2XMLReader@xercesc_3_1  ->
XMLDocumentHandler@xercesc_3_1  -> XMLErrorReporter@xercesc_3_1 
-> XMLEntityHandler@xercesc_3_1  ->
DocTypeHandler@xercesc_3_1
VSSAX2Parser -> SAX2XMLReaderImpl@xercesc_3_1  ->
XMemory@xercesc_3_1  -> SAX2XMLReader@xercesc_3_1  ->
XMLDocumentHandler@xercesc_3_1  -> XMLErrorReporter@xercesc_3_1 
-> XMLEntityHandler@xercesc_3_1  ->
DocTypeHandler@xercesc_3_1
VSSAX2Parser -> SAX2XMLReaderImpl@xercesc_3_1  ->
XMemory@xercesc_3_1  -> SAX2XMLReader@xercesc_3_1  ->
XMLDocumentHandler@xercesc_3_1  -> XMLErrorReporter@xercesc_3_1 
-> XMLEntityHandler@xercesc_3_1  ->
DocTypeHandler@xercesc_3_1
VSSAX2Parser -> SAX2XMLReaderImpl@xercesc_3_1  ->
XMemory@xercesc_3_1  -> SAX2XMLReader@xercesc_3_1  ->
XMLDocumentHandler@xercesc_3_1  -> XMLErrorReporter@xercesc_3_1 
-> XMLEntityHandler@xercesc_3_1  ->
DocTypeHandler@xercesc_3_1
XXFH_URL -> XXFH
XMLParseIncidentHandler -> ErrorHandler@xercesc_3_1
XMLDoc -> DefaultHandler@xercesc_3_1  ->
EntityResolver@xercesc_3_1  -> DTDHandler@xercesc_3_1  ->
ContentHandler@xercesc_3_1  -> ErrorHandler@xercesc_3_1  ->
LexicalHandler@xercesc_3_1  -> DeclHandler@xercesc_3_1
XMLDoc -> DefaultHandler@xercesc_3_1  ->
EntityResolver@xercesc_3_1  -> DTDHandler@xercesc_3_1  ->
ContentHandler@xercesc_3_1  -> ErrorHandler@xercesc_3_1  ->
LexicalHandler@xercesc_3_1  -> DeclHandler@xercesc_3_1
XMLDoc -> DefaultHandler@xercesc_3_1  ->
EntityResolver@xercesc_3_1  -> DTDHandler@xercesc_3_1  ->
ContentHandler@xercesc_3_1  -> ErrorHandler@xercesc_3_1  ->
LexicalHandler@xercesc_3_1  -> DeclHandler@xercesc_3_1
XMLDoc -> DefaultHandler@xercesc_3_1  ->
EntityResolver@xercesc_3_1  -> DTDHandler@xercesc_3_1  ->
ContentHandler@xercesc_3_1  -> ErrorHandler@xercesc_3_1  ->
LexicalHandler@xercesc_3_1  -> DeclHandler@xercesc_3_1
XMLDoc -> DefaultHandler@xercesc_3_1  ->
EntityResolver@xercesc_3_1  -> DTDHandler@xercesc_3_1  ->
ContentHandler@xercesc_3_1  -> ErrorHandler@xercesc_3_1  ->
LexicalHandler@xercesc_3_1  -> DeclHandler@xercesc_3_1
XMLDoc -> DefaultHandler@xercesc_3_1  ->
EntityResolver@xercesc_3_1  -> DTDHandler@xercesc_3_1  ->
ContentHandler@xercesc_3_1  -> ErrorHandler@xercesc_3_1  ->
LexicalHandler@xercesc_3_1  -> DeclHandler@xercesc_3_1
LocalFileInputSource@xercesc_3_1 -> InputSource@xercesc_3_1 
-> XMemory@xercesc_3_1
MemBufInputSource@xercesc_3_1 -> InputSource@xercesc_3_1  ->
XMemory@xercesc_3_1
SAXException@xercesc_3_1 -> XMemory@xercesc_3_1
VSWinSockNetAccessor -> XMLNetAccessor@xercesc_3_1  ->
XMemory@xercesc_3_1
VSBinHTTPURLInputStream -> BinInputStream@xercesc_3_1  ->
XMemory@xercesc_3_1
SIJDWPServer -> vsJDWPInterface
vsJDWPServer
vsJDWPConnection -> VSTHREAD
XXFH_REMOTE390 -> XXFH
XXFH_JAR -> XXFH
XXFH_POSIX -> XXFH
VSSEARCHPOS_bufsearch -> VSSEARCHPOS
re_t -> VSSTRSEARCH_I
XXFF
XXFF_LOCAL2 -> XXFF
XXFF_REMOTE390 -> XXFF
VSTHREAD
VSSTRSEARCH -> VSSTRSEARCH_I
SESimpleHandle@slickedit -> SEHandle@slickedit  ->
SEMemory@slickedit
SEMagicHandle@slickedit -> SEHandle@slickedit  ->
SEMemory@slickedit
btVariableBlock -> btStoredObject
btTableInfo -> btStoredObject
btTableIterator
btDatabase -> btStoredObject
btIndexIterator
btIndexStructure
btAbstractHashTable -> btIndexStructure
btBlockHashTable -> btStoredObject  -> btAbstractHashTable  ->
btIndexStructure
btBlockHashTable -> btStoredObject  -> btAbstractHashTable  ->
btIndexStructure
btBtreeIndex -> btStoredObject  -> btIndexStructure
btBtreeIndex -> btStoredObject  -> btIndexStructure
btSeekSet -> btStoredObject
btMemoryHashTable –> btIndexStructure

 

我当下分析的是的SE当中vsapi.dll 有趣味分析SE的人,大家可以谈谈沟通一下!

SE里面还有众多事物等待大家去切磋发掘。

 

2011.08.21 对该文举行了再度编辑

 

 

相关文章