学途智助
首页
分类
标签
关于网站
登录
eeettt123
2024-03-26
80
作者编辑
数据结构 笔记 第一章
p->Next = L; L = p; 类似p->Next = L->Next; L->Next = p; 也是一种方式 无论怎么样 都要检查 有没有return ,记得兜底性的return ; 然后就是 malloc 之后 的指针才能可以给他分配next 指针没有根据地 node,就没有next~~~~ ### 错题记录 ```c for ( List p = head; p->next != NULL; p = p->next ){ if(p->next->next!=NULL) //这个if可以规避倒二节点 的下下个是空节点NULL然后循环还强制下一个p->next 就会段错误了 ``` 就这样子吧 ```cpp struct stud_node *createlist(){ typedef struct stud_node* List; int id; List head =(struct stud_node*) malloc(sizeof(struct stud_node)); List p = head; scanf("%d",&id); while( id !=0){ List p2=(struct stud_node*) malloc(sizeof(struct stud_node)); p2->num=id; scanf("%s",&p2->name); scanf("%d",&p2->score); p2->next =NULL; //数据输入完毕 p->next=p2; p=p->next; scanf("%d",&id); } // head=head->next; return head; } struct stud_node *deletelist( struct stud_node *head, int min_score ){ typedef struct stud_node* List; List L2=(struct stud_node*) malloc(sizeof(struct stud_node)); List p1= L2; for ( List p = head; p->next != NULL; ){ if(p->next->score >=min_score ) { p1->next = p->next; // if(p->next->next!=NULL) //这个if可以规避倒二节点 的下下个是空节点然后循环还强制下一个 就会段错误了 //上面的也注释掉了,事实上就是没必要了,对于for循环控制 的p=p->next太危险了,尤其是是在删除节点的时候,段错误,或者防止段错误而导致运行超时(没法遍历到终点) p->next=p->next->next; p1=p1->next; p1->next=NULL; } else p = p->next; } // 这里还是犯 跳了两步的错误 return L2->next; } //样例都过了居然不给我分 ``` **实际上在顺序表和链表中,有删除操作的一定要注意少用for里面的i++(或者指针向下走,这种下一轮迭代形式会因为 又删除(路变短了一轮),又下一轮迭代,导致循环过程,一轮一下走了 两步。)**
C/C++
算法竞赛
考研
赞
博客信息
作者
eeettt123
发布日期
2024-03-26
其他信息 : 其他三字母的人名首字母都是其他同学发布的哦