c++ - c-用这种方式设计一个基本链表遇到的一个问题?
PHP中文网
PHP中文网 2017-04-17 15:27:00
0
1
424

(非学校作业, 我是非 cs 相关的学生)

遇到的问题是 有些 next 指向的空间本应该是 NULL, 但是 debug 时提示 next 是error = read memory from..., 想问下这里为什么会这样呢 (clang 环境下有一定几率出现这个 error 提示, 有时候能正确输出), 应该怎么改正呢? 谢谢大家(其实我也想了很久了, 但是一直想不通.

/** @file log.c */ #include  #include  #include  typedef struct _node{ char* cmd; struct _node* next; }node; typedef struct _log_t { node* head; } log_t; void log_init(log_t *l); void log_destroy(log_t* l); void log_push(log_t* l, const char *item); char *log_search(log_t* l, const char *prefix); /** 对log进行初始化,log的“构造函数” */ void log_init(log_t *l) { l->head = NULL; } /** 销毁一个log,释放所有内存空间,log的“析构函数” */ void log_destroy(log_t* l) { if (l->head == NULL) { return; } node *current_node = l->head; while (current_node != NULL) { node *delete_node = current_node; current_node = current_node->next; free(delete_node); } l->head = NULL; } /** 向log中推入一个字符串,你可以将log视为一个由链表组成的栈 */ void log_push(log_t* l, const char *item) { if (l->head == NULL) { node *new_head = (node*)malloc(sizeof(node)); l->head = new_head; l->head->cmd = item; return; } node *current_node = l->head; while (current_node->next != NULL) //第一处 next 出错点 { current_node = current_node->next; } node *new_node = (node*)malloc(sizeof(node)); new_node->cmd = item; current_node->next = new_node; } /** 搜索log中是否含有对应前缀的字符串 */ char *log_search(log_t* l, const char *prefix) { node *current_node = (node*)malloc(sizeof(node)); current_node = l->head; while (current_node != NULL) { if (current_node->cmd == prefix) //第二处 next 出错点 { return current_node->cmd; } current_node = current_node->next; } return NULL; } int main() { log_t *linkedlist = (log_t*)malloc(sizeof(log_t)); log_init(linkedlist); log_push(linkedlist, "I love you"); log_push(linkedlist, "Me too"); printf("%s\n", log_search(linkedlist, "I love you")); printf("%s\n", log_search(linkedlist, "Me too")); printf("%s", log_search(linkedlist, "hhh")); log_destroy(linkedlist); }
PHP中文网
PHP中文网

认证0级讲师

모든 응답 (1)
Ty80

刚刚才想到, next 指向 NULL 就可以解决了-_-||

    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!