ARTS打卡第一周

Algorithm

可以使用一个栈来实现大括号(符号为“{}”,又称花括号)、中括号(符号为“[]”,又称中括号)和小括号(符号为“()”,又称圆括号)的匹配,例如“{[()]}”、“([{}])”或者“({}{}{})[]”这样成对出现就是合法的,而“{[}]”、“{(}”和“)[(]”这样的都是非法的。
可以使用一个栈来保存没有匹配的左括号,然后扫描字符串里边的字符,要是遇到栈顶的左括号没有匹配上已经扫描到的字符,或者字符串已经扫描完成,但是栈里边还有左括号没有匹配上,那么是非法的。
代码暂时如下,还没有完善出来:

#include
#include
#include

typedef struct operatorNodeStruce {
        char data;
        struct operatorNodeStruce* next;
}operatorNode;

typedef struct operatorStackStruct{
        operatorNode* top;
        operatorNode* base;
}operatorStack;

void pushChar(operatorStack* stackpush,char pushchar){
        operatorNode* pushNode = (operatorNode*)malloc(sizeof(operatorNode));
        if(stackpush->base==NULL){
                pushNode->data = pushchar;
                pushNode->next = NULL;
                stackpush->base = pushNode;
            stackpush->top = pushNode;
        }else{
                pushNode->data = pushchar;
                pushNode->next = stackpush->top;
                stackpush->top = pushNode;
        }

}
operatorNode popChar(operatorStack* stackpop){
        operatorNode nodeReturn = *(stackpop->top);
        operatorNode* nodeFree = stackpop->top;
        if(stackpop->base == stackpop->top){
                stackpop->base = NULL;
                stackpop->top = NULL;
        }else if(stackpop->base == NULL){
                printf("the operator stack is empty!\n");
                nodeReturn.data = ' ';
                nodeReturn.next = NULL;
        }else{
                stackpop->top = stackpop->top->next;
        }
        free(nodeFree);
        nodeFree = NULL;
        return nodeReturn;
}


int main(){
        operatorStack* charStackReal = (operatorStack*)malloc(sizeof(operatorNode));
        charStackReal->base =NULL;
        char testChars[] = "({}[])[]";
        for(int i=0;i<strlen(testChars);i++){
           char charjudgement = testChars[i];
           if(charjudgement=='('||charjudgement=='['||charjudgement=='{'){
              pushChar(charStackReal,charjudgement);
           }
           if(charjudgement==')'){
                  if(charStackReal->top->data=='('){
                             popChar(charStackReal);
                    }
           }
           if(charjudgement==']'){
                 if(charStackReal->top->data=='['){
                             popChar(charStackReal);
                    }
           }
           if(charjudgement=='}'){
                 if(charStackReal->top->data=='{'){
                             popChar(charStackReal);
                    }
            }
        }
        if(charStackReal->base ==NULL){
                printf("Not legal\n");
        }else{
                printf("legal\n");
        }
}

Review

最近在读Marshall Goldsmith的Triggers这本书,中文名翻译为《自律力》,我这里谈谈他在第一章里边提到的两个观点:

第一个观点:It is very difficult to do meanful behavioral change。(即很难做出有益的行为改变)
第二个观点: if you don’t want to change yourself, you won’t change yourself truly(除非自己想要改变,否则就不会改变)

第一个观点底下还有三个为什么我们不想改变的原因:

1.我们不承认自己需要改变
2.我们没有意识到惯性阻碍我们改变
3.我们不知道如何进行改变

Technique/Tip

我现在觉得很多开发方面的程序员需要把测试技能好好掌握,比如我上边的算法,我就是因为gdb使用的不够熟练,导致于自己迟迟没有找出程序中的bug。不过学习gdb还是需要循序渐进。

Share

原先感觉自己在AI方面缺了技术、想法、人脉和资金 ,现在发现自己还缺个人定位,就是原先不明确自己需要处于基础层、技术层、应用层还是使用层,或者赛道层,现在可以明确自己想要处于技术层,就是自己想要学习AI的技术。现在自己正在学习操作系统底层的知识,基本上每天在csdn上写一篇博客学习,以后还需要每二周至少写一篇AI技术的博文。

你可能感兴趣的:(ARTS打卡,学习)