今天也要元气满满地写bug哟!
题目
《算法笔记》练习题,见http://codeup.hustoj.com/problem.php?cid=100000607&pid=3
代码
#include <stdio.h>
#include <stdlib.h>
typedef struct NODE{
int data;
struct NODE *next;
}LinkList,*PLinkList;
void create_list(PLinkList *L,int n){
PLinkList node,p;
*L=(PLinkList)malloc(sizeof(LinkList));
(*L)->next=NULL;
p=*L;
while(n--){
node=(PLinkList)malloc(sizeof(LinkList));
scanf("%d",&(node->data));
node->next=p->next;
p->next=node;
p=node;
}
}
/*返回查找元素前面的一个节点,没找到返回NULL*/
PLinkList find_list(PLinkList L,int x){
while((L->next)!=NULL){
if(L->next->data==x) return L;
L=L->next;
}
return NULL;
}
void insert_list(PLinkList L,PLinkList node){
while(L->next!=NULL){
if(L->next->data > node->data) break;
L=L->next;
}
node->next=L->next;
L->next=node;
}
void print_list(PLinkList L){
while((L=L->next)!=NULL){
if(L->next==NULL) printf("%d\n",L->data);
else printf("%d ",L->data);
}
}
int main()
{
int x,n;
PLinkList L;
PLinkList p,q,r;
scanf("%d%d",&x,&n);
create_list(&L,n);
p=find_list(L,x);
if(p==NULL){
printf("no\n");
q=(PLinkList)malloc(sizeof(LinkList));
q->data=x;
insert_list(L,q);
}
else{
q=p->next;
r=q->next;
q->next=r->next;
r->next=q;
p->next=r;
}
print_list(L);
return 0;
}
BUGS
error:incompatiable types when assigning to type 'LinkList' from 'PLinkList'
赋值时的类型不兼容,把链表的指针误写为链表的结构。
error:invalid type argument of '->'
错误处与上面相同,把结构当指针使用了。
程序死循环,无输出
插入节点函数循环体中没有将链表指针后移。
输出数据错误,且死循环
循环输出两个节点的值,说明构成环。最后发现插入节点函数出问题,写错节点位置关系。