问题及代码:
/*
*Copyright (c) 2014,烟台大学计算机学院
*All rights reserved.
*文件名称:lily.cpp
*作者:李莉
*完成日期:2015年5月24日
*版本号:v1.0
*问题描述:编写函数void search(int x),输出链表中是否有值为x的结点。
程序输入:输入若干正数
*程序输出:运行结果
*/
#include <iostream>
#include <cstdio>
using namespace std;
struct Node
{
int date;
struct Node *next;
};
Node *head=NULL;
void make_list();
void out_list();
void search(int x);
int main()
{
int b;
make_list();
out_list();
cout<<"请输入要查询的结点:"<<endl;
cin>>b;
search(b);
return 0;
}
void make_list()
{
int n;
Node *p,*q;
cout<<"请输入若干正数,以0或负数表示输入结束:";
cin>>n;
while(n>0)
{
p=new Node;
p->date=n;
p->next=NULL;
if(head==NULL)//第一次把head设定为空指针是为了找到头结点的位置
head=p;
else
q->next=p;
q=p;
cin>>n;
}
return;
}
void out_list()
{
Node *p=head;
cout<<"链表中的数据为:";
while(p!=NULL)
{
cout<<p->date<<" ";
p=p->next;
}
cout<<endl;
return;
}
void search(int x)
{
Node *p=head;
while(p!=NULL&&p->date!=x)
{
p=p->next;
}
if(p!=NULL)
cout<<"链表中有值为"<<x<<"的结点"<<endl;
else
cout<<"链表中没有值为"<<x<<"的结点"<<endl;
return;
}
运行结果:
心得体会:
查找啊,空指针啊