十二周——链表

来源:互联网 发布:app软件色影 编辑:程序博客网 时间:2024/05/02 01:26

问题及代码:

/**Copyright (c) 2014,烟台大学计算机学院*All rights reserved.*文件名称:lily.cpp*作者:李莉*完成日期:2015年6月3日*版本号: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);void deletehead();int main(){    int b;    make_list();    out_list();    cout<<"请输入要查询的结点:"<<endl;    cin>>b;    search(b);    deletehead();    out_list();    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;}void deletehead(){    Node *p=head;    if(p!=NULL)    {        head=p->next;        delete p;        cout<<"删除了首结点!"<<endl;    }    else        cout<<"空链表,不可以删除!"<<endl;    return ;}


 

运行结果:

心得体会:

删除的特殊方式,关于链表,我总觉得无论任何处理,都是比较特殊的处理方式,都比平常的数据处理要复杂,要慢慢适应,但是不可否认的是的确链表很好用

0 0