CodeBlock调试(DeBug)指南

1. 新建 project

在这里插入图片描述

2. 关键:项目路径下不要有中文/空格/下划线最好也不要

3. 以Debug版本编译,然后点击debug按钮即可

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>


typedef struct User {
    int id;
    struct User* pNext;

}User;

/*包含头节点*/
User* newLink(unsigned char linkLength);
void displayLink(User* p);
//链表的增删改查
void* addElementInTheEnd(User* pHeader);//增加元素
char  deleteElement(User* pHeader,int id);//删除元素




int main() {

#if 1
    User* p = newLink(10);
   //printf("id is:%d\n",p->pNext->id);
    
    displayLink(p);
    //printf("id is:%d\n", p->pNext->id);
    addElementInTheEnd(p);
    displayLink(p);
    deleteElement(p,2);
    displayLink(p);
#else
    
    int* p = (int*)malloc(sizeof(int));
    int a;
    int* p2 = &a;
    *p = 1024;
    printf("%p %d\n",p,*p);
    free(p2);
    //p = NULL;
    //printf("%p \n", p);

#endif
    return 0;
}








/*含首元节点*/
User* newLink(unsigned char linkLength) {

    int i;
    User *pHeader = (User*)malloc(sizeof(User));
    if (NULL == pHeader) {
        return NULL;
    }
    pHeader->id = 101;
    User* pTemp = (User*)malloc(sizeof(User));
    if (NULL == pTemp) {
        printf("创建失败\n");
        return NULL;
    }
    printf("addr of pHeader:%p,pTemp:%p\n", pHeader, pTemp);
    pTemp->id = 102;
    pHeader->pNext = pTemp;
    for (i = 0; i < linkLength; i++) {
        User* pNode = (User*)malloc(sizeof(User*));
        if (NULL == pNode) {
            printf("创建失败\n");
            return NULL;
        }
        pNode->id = i;
        pNode->pNext = NULL;
        printf("addr of pNode:%p\n",pNode);
        pTemp->pNext = pNode;
        pTemp = pNode;

    }

    printf("创建成功\n");
    return pHeader;


}

void displayLink(User* p) {
    printf("=============================================\n");
    while (NULL != p) {
        printf("id:%d,addr of user:0x%p\n",p->id,p);
        p = p->pNext;
    }
}


/**
    @brief: 
    @retval:
        如果成功返回被添加的节点地址
        如果失败返回NULL

*/
void* addElementInTheEnd(User* pHeader) {
    User* pNewNode = (User*)malloc(sizeof(User));
    if (NULL == pNewNode) {
        return NULL;
    }
    while (pHeader->pNext != NULL) {
        pHeader = pHeader->pNext;
    }
    pNewNode->id = pHeader->id + 1;
    pNewNode->pNext = NULL;
    pHeader->pNext = pNewNode;


    return NULL;
}



/*
    @brief: 删除元素
    @retval:
        如果成功删除返回  1
        如果失败返回      0
*/
char deleteElement(User* pHeader, int id) {
    User* pTemp = pHeader;
    User* del;
    if (NULL == pHeader) {
        return 0;
    }

    while (NULL != pTemp) {
        if (id == pTemp->pNext->id) {
            del = pTemp->pNext;
            printf("addr of del is: %p id is:%d\n",del,del->id);
            pTemp->pNext = pTemp->pNext->pNext;
            printf("删除成功\n");
            
            free(del);
            del = NULL;
            
            return 1;
        }
        pTemp = pTemp->pNext;
    }

    


    printf("删除失败\n");

    return 0;
}











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值