用指针形成链的小心得

来源:互联网 发布:人人下载器 for mac 编辑:程序博客网 时间:2024/05/30 13:43
心得:
今天晚上写指针到1点才把问题解决, 还是挺高兴的, 并且还不感觉累, 所以我抓紧写一下今天晚上的心得;
(1):对某个A指针操作, 通过把他赋给另外一个B指针并且对此B指针的各种操作都对A指针没有影响, 就是不能改变A的任何属性。
(2):如果想通过指针形成一条链(链表,二叉树, 二叉搜索等),只能对本节点指向下一个节点的指针直接赋下一个节点的地址,
       而不能把本节点指向下一个节点的指针赋给另外一个指针,对另外一个指针赋下一个节点的地址, 这是不能形成一条链的(切记)。

(3):不放弃。 对自己认为自己的方法或想法可以完成的东西, 要坚持实现, 既可以挑战自己, 又可以学到很多知识,并且很有乐趣。

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;char A[15];int cnt;struct Node{    char v;    Node *left, *right;};Node* build(char c){    Node * p;    p = (Node*)malloc(sizeof(Node));    p->v = c;    p->left = p->right = NULL;    return p;}Node* creat(Node* root, char s[]){    for(int i = 0; i < strlen(s); i++)    {        Node *pb, *pf = root;        if(!root)            root = pf = build(s[i]);        else        {            pb = build(s[i]);            while(1)            {                if(s[i]>pf->v)                    {                        if(pf->right == NULL)                            {                                pf->right = pb;                                break;                            }                        else                            pf = pf->right;                    }                else                    {                        if(pf->left == NULL)                            {                                pf->left = pb;                                break;                            }                        else                            pf = pf->left;                    }            }        }    }    return root;}void Inorder(Node* root){    if(!root)        return;    A[cnt] = root->v;    Inorder(root->left);    Inorder(root->right);}void Outorder(Node* root){    if(!root)        return;    Outorder(root->left);    Outorder(root->right);    A[cnt++] = root->v;}void Preorder(Node* root){    if(!root)        return;    Preorder(root->left);    A[cnt++] = root->v;    Preorder(root->right);}int main(){    int n;    char s[15];    scanf("%d", &n);    while(n--)    {        scanf("%s", s);        Node *root = NULL;        root = creat(root, s);        memset(A, 0, sizeof(A));        cnt = 0;        Inorder(root);        printf("%s\n", A);        memset(A, 0, sizeof(A));        cnt = 0;        Outorder(root);        printf("%s\n", A);        memset(A, 0, sizeof(A));        cnt = 0;        Preorder(root);        printf("%s\n", A);    }    return 0;}


0 0
原创粉丝点击