这段代码的功能就是在Jone之前插入marit,可是事实上程序运行起来不是这样子
原题目是在值为“jone”的结点前插入值为”marit“的结点,若没有值为”jone“的结点,则插在链表的最后;
请帮忙看一下本人这个程序错在哪里,谢谢
# include<iostream.h>
struct lianbiao
{
char zifu[10];
lianbiao *next;
};
lianbiao *head;
lianbiao *create()
{
head=NULL;
lianbiao *ps;
ps=new lianbiao;
strcpy(ps->zifu,”jie”);
ps->next=head;
head=ps;
ps=new lianbiao;
strcpy(ps->zifu,”zhao”);
ps->next=head;
head=ps;
ps=new lianbiao;
strcpy(ps->zifu,”chen”);
ps->next=head;
head=ps;
ps=new lianbiao;
strcpy(ps->zifu,”jone”);
ps->next=head;
head=ps;
return (head);
}
void dayin(lianbiao*head)
{
cout<<“插入前的链表为”<<endl;
while(head)
{
cout<<head->zifu<<” “;
head=head->next;
}
cout<<endl;
}
lianbiao *charu(lianbiao*head,lianbiao *insert)
{
int k=1;
lianbiao *p=head;
if(head->zifu==”jone”)
{
insert->next=head;
p=insert;
k=0;
}
while(k)
{
while(head)
{
if(head->next->zifu==”jone”)
{
insert->next=head->next;
head->next=insert->next;
break;
}
if(head->next==NULL)
{
head->next=insert;
insert->next=NULL;
break;
}
head=head->next;
}
k=0;
}
return (p);
}
int main()
{
dayin(create());
lianbiao ps;
strcpy(ps.zifu,”marit”);
dayin(charu(create(),&ps));
return 0;
}
原题目是在值为“jone”的结点前插入值为”marit“的结点,若没有值为”jone“的结点,则插在链表的最后;
请帮忙看一下本人这个程序错在哪里,谢谢
# include<iostream.h>
struct lianbiao
{
char zifu[10];
lianbiao *next;
};
lianbiao *head;
lianbiao *create()
{
head=NULL;
lianbiao *ps;
ps=new lianbiao;
strcpy(ps->zifu,”jie”);
ps->next=head;
head=ps;
ps=new lianbiao;
strcpy(ps->zifu,”zhao”);
ps->next=head;
head=ps;
ps=new lianbiao;
strcpy(ps->zifu,”chen”);
ps->next=head;
head=ps;
ps=new lianbiao;
strcpy(ps->zifu,”jone”);
ps->next=head;
head=ps;
return (head);
}
void dayin(lianbiao*head)
{
cout<<“插入前的链表为”<<endl;
while(head)
{
cout<<head->zifu<<” “;
head=head->next;
}
cout<<endl;
}
lianbiao *charu(lianbiao*head,lianbiao *insert)
{
int k=1;
lianbiao *p=head;
if(head->zifu==”jone”)
{
insert->next=head;
p=insert;
k=0;
}
while(k)
{
while(head)
{
if(head->next->zifu==”jone”)
{
insert->next=head->next;
head->next=insert->next;
break;
}
if(head->next==NULL)
{
head->next=insert;
insert->next=NULL;
break;
}
head=head->next;
}
k=0;
}
return (p);
}
int main()
{
dayin(create());
lianbiao ps;
strcpy(ps.zifu,”marit”);
dayin(charu(create(),&ps));
return 0;
}
解决方案:25分
#include<iostream> using namespace std; struct lianbiao { char zifu[10]; lianbiao *next; }; lianbiao *head; lianbiao *create() { head=NULL; lianbiao *ps; ps=new lianbiao; strcpy(ps->zifu,"jie"); ps->next=head; head=ps; ps=new lianbiao; strcpy(ps->zifu,"zhao"); ps->next=head; head=ps; ps=new lianbiao; strcpy(ps->zifu,"chen"); ps->next=head; head=ps; ps=new lianbiao; strcpy(ps->zifu,"jone"); ps->next=head; head=ps; return (head); } void dayin(lianbiao*head) { cout<<"插入前的链表为"<<endl; while(head) { cout<<head->zifu<<" "; head=head->next; } cout<<endl; } lianbiao *charu(lianbiao*head,lianbiao *insert) { int k=1; lianbiao *p=head; if(strcmp(head->next->zifu, "jone")) { insert->next=head; p=insert; k=0; } while(k) { while(head) { if(head->next == NULL) { head->next=insert; insert->next=NULL; break; } if(strcmp(head->next->zifu, "jone")) { insert->next=head->next; head->next=insert;//(insert->next) break; } head=head->next; } k=0; } return (p); } int main() { dayin(create()); lianbiao ps; strcpy(ps.zifu,"marit"); dayin(charu(create(),&ps)); system("pause"); return 0; }
char 数组和字符串比较最好不用直接用 == 号 用strcmp 和 strncmp比较好
解决方案:5分
本人只想说那是一段乱代码,没有命名规则,没有格式,没有注释,养成良好的习惯,逻辑就没有这么混乱!