zoukankan      html  css  js  c++  java
  • 链表基本操作

    #include"iostream.h"


    struct Node
    {
    int Data;
    Node*next;
    };
    class list
    {
    Node*head;
    public:
    list(){head=NULL;}
    void insertlist(int aData,int bData);
    void deletelist(int aData);
    void outputlist();
    Node*gethead(){return head;}
    };

    void list::insertlist(int aData,int bData) //设aData是结点a中的数据,bData是结点b中的数据,结点a之前插入b结点
    {
    Node*p,*q,*s; //p指向结点a,q指向结点a_k,s指向结点b
    s=(Node*)new(Node); //动态分配一个新结点
    s->Data=bData; //设b为此结点
    p=head;
    if(head==NULL) //若是空表,使b作为第一个结点
    {
    head=s;
    s->next=NULL;
    }
    else
    if(p->Data==aData) //若a是第一个结点
    {
    s->next=p;
    head=s;
    }
    else
    {
    while(p->Data!=aData && p->next!=NULL)//查找结点a
    {
    q=p;
    p=p->next;
    }
    if(p->Data==aData) ///若有结点a
    {
    q->next=s;
    s->next=p;
    }
    else //若没有结点a;
    {
    p->next=s;
    s->next=NULL;
    }
    }
    }

    void list::deletelist(int aData) //设aData是要删除的结点a中的数据成员
    {
    Node*p,*q; //p用于指向结点a,q用于指向结a的前一个结点
    p=head;
    if(p==NULL) //若是空表
    return;
    if(p->Data==aData) //若a是第一个结点
    {
    head=p->next;
    delete p;
    }
    else
    {
    while(p->Data!=aData&&p->next!=NULL) //查找结点a
    {
    q=p;
    p=p->next;
    }
    if(p->Data==aData) //若有结点a
    {
    q->next=p->next;
    delete p;
    }
    }
    }

    void list::outputlist()
    {
    Node*current=head;
    while(current!=NULL)
    {
    cout<<current->Data<<" ";
    current=current->next;
    }
    cout <<" "<<endl;
    }

    void main()
    {
    list A,B;
    int Data[10]={25,41,16,98,5,67,9,55,1,121};

    A.insertlist(0,Data[0]); //建立链表A首结点
    for(int i=1;i<10;i++)
    A.insertlist(0,Data[i]); //顺序向后插入
    cout<<" 链表A:";
    A.outputlist();

    A.deletelist(Data[7]);
    cout<<"删除元素Data[7]后";
    A.outputlist();


    B.insertlist(0,Data[0]); //建立链表B首结点
    for(i=0;i<10;i++)
    B.insertlist(B.gethead()->Data,Data[i]); //在首结点处顺序向“前”插入


    cout<<" 链表B:";
    B.outputlist();
    B.deletelist(67);


    cout<<"删除元素67后";
    B.outputlist();
    }

    转载自http://blog.chinaunix.net/uid-26748613-id-3875173.html

  • 相关阅读:
    hackrank Sorting Array of Strings
    c programming create a file
    spine unity3D(摘自博主softimagewht)
    实现鼠标双击(OnGUI)
    使用Unity NGUIInputField组件输入时发现显示为白色就是看不到字体
    NGUI制作可滚动的文本框(摘,如有侵权,联系删除)
    Unity3d 简单的小球沿贝塞尔曲线运动(适合场景漫游使用)
    MVC简单随笔
    Unity脚本自动添加注释脚本及排版格式
    树和树的分类
  • 原文地址:https://www.cnblogs.com/thunder-wu/p/6444964.html
Copyright © 2011-2022 走看看