我是指针,却丢失了目标地址! 我是循环,却缺少了结束条件! 我是函数,却没有人来调用!
我滴
/*****链式表的实现和操作*****/
//作者:zkkpkk
#include <iostream.h>class Linklist//定义链表类
{
public:
Linklist* next;
Linklist()
{
next=NULL;
}
int data;
void Push(Linklist** refhead,int data);//添加节点
void Insert(Linklist* head,Linklist* pio);//插入节点
void Display(Linklist* head);//显示链表
int Length(Linklist* head);//统计节点数目
Linklist* Find(Linklist* head,int data);//查找节点地址
void Delete(Linklist* head,int data);//删除节点
};
Linklist* head=new Linklist;
void Linklist::Insert(Linklist* head,Linklist* pio)
{
Linklist *cur,*bef;
cur=bef=head;
while(cur != NULL)
{ if(cur->data >= pio->data)
break;
else
{bef=cur;
cur=cur->next;
}
}
if(cur==head)
{ pio->next=head;
head=pio;
}
else
{
bef->next=pio;
pio->next=cur;
}
}
Linklist* Linklist::Find(Linklist* head,int data)
{
bool bo=true;
Linklist* cur;
cur=head;
while(cur != NULL)
{
if(cur->data==data){
bo=false;
return cur;}
cur=cur->next;
}
if(bo==true){
cout<<\"It is no have the Linklist!\"<<endl;
return NULL;
}
}
int Linklist::Length(Linklist* head)
{
int count=0;
Linklist* cur;
cur=head;
while(cur != NULL)
{
cur=cur->next;
count++;
}
return count;
}
void Linklist::Push(Linklist** refhead,int data)
{
Linklist* newLinklist=new Linklist;
newLinklist->data=data;
newLinklist->next=*refhead;
*refhead=newLinklist;
}
void Linklist::Display(Linklist* head)
{
Linklist *temp=new Linklist;
temp=head;
if(temp==NULL)
cout<<\"The Linklist is empty!\"<<endl;
else
{
while(temp!=NULL)
{
cout<<temp->data<<\"\t\";
temp=temp->next;
}
cout<<endl;
}
}
void Linklist::Delete(Linklist* head,int data)
{
Linklist *cur,*bef;
cur=bef=head;
while(cur != NULL)
{
if(cur->data==data)
break;
else
{
bef=cur;
cur=cur->next;
}
}
if(cur==head)
{
cur->next=head;
delete cur;
}
else
{
bef->next=cur->next;
delete cur;
}
}
#include"head_node.h"
node* merge_two_List(node *head1,node *head2)
{
node *head,*s,*p,*r;
p=head1->next;
s=head2->next;
head=(node*)malloc(sizeof(node));
head->next=NULL;
r=head->next;
while(s&&p)
{
if(p->info<s->info)
{
head1->next=p->next;
p->next=NULL;
r->next=p;
r=r->next;
p=head1->next;
}
else
{
head2->next=s->next;
s->next=NULL;
r->next=s;
r=r->next;
s=head2->next;
}
}
while(s)
{
head2->next=s->next;
s->next=NULL;
r->next=s;
r=r->next;
s=head2->next;
}
while(p)
{
head1->next=p->next;
p->next=NULL;
r->next=p;
r=r->next;
p=head1->next;
}
//free(head1);
//free(head2);
return head;
}
int main()
{
node *head,*head1,*head2;
head1=Creat_Node();
head2=Creat_Node();
head=merge_two_List(head1,head2);
Print_Node(head);
return 0;
}
上面的合并函数有个问题:结构指针r的开始被赋值为"null", 然后在 while 循环里又令 r->next = p, 这是不是有问题?