zoukankan      html  css  js  c++  java
  • 单向链表(C++) kiddy

    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    typedef struct Node{
        int data;
        struct Node* next;
    }NODE,*LinkList;//定义类型
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        LinkList link=(NODE *)malloc(sizeof(NODE));
        void InitLinkList(LinkList list);//初始化
        LinkList SearchLinkList(LinkList list,int d);//查找
        void InsertLinkList(LinkList list,int h,int e);//插入
        void DeleteLinkList(LinkList list,int e);
        void Display(LinkList list);//输出结果
        InitLinkList(link);
        cout<<"链表创建完成:"<<endl;
            Display(link);
            cout<<"\n";
        int sd;
        cout<<"请输入要查找的结点数据:"<<endl;
        cin>>sd;
        LinkList p=SearchLinkList(link,sd);
        if(p==NULL){
            cout<<"没有找到数据:"<<sd<<endl;
        }else{
            cout<<"找到数据:"<<sd<<" 且指针地址为:"<<p<<endl;
        }
        cout<<"\n";
        cout<<"请输入要在哪个结点后插入数据:"<<endl;
        int dh,de;
        cin>>dh;
        cout<<"请输入要插入的数据:"<<endl;
        cin>>de;
        InsertLinkList(link,dh,de);
        cout<<"插入完毕!"<<endl;
        Display(link);
        cout<<"\n";
        cout<<"请输入要删除数据:"<<endl;
        int ee;
        cin>>ee;
        DeleteLinkList(link,ee);
        cout<<"删除完毕!"<<endl;
        Display(link);
        system("pause");
        return 0;
    }
    //输出链表
    void Display(LinkList list)
    {
            LinkList q=list;
        while(q!=NULL){
            cout<<q->data<<"";
            q=q->next;
        }
        cout<<"\n";
    }
    
    //初始化
    void InitLinkList(LinkList list)
    {
        LinkList t;LinkList s=list;
        int d;
        cout<<"请顺次输入8个整数:"<<endl;
        for(int i=0;i<8;i++)
        {
            cin>>d; 
            if(i>0){
                t=(NODE *)malloc(sizeof(NODE));//从第2个开始分别分配内存
                t->data=d;//数据
                t->next=NULL;
                s->next=t;//作为下个元素
                s=t;
            }else{
            s->data=d;
            s->next=NULL;
            }
        }
    }
    //查找结点
    LinkList SearchLinkList(LinkList list,int d)
    {
        LinkList p=list;
        if(list!=NULL){
            while(p!=NULL)
            {
                if(p->data==d)//若查到,则退出循环
                {
                    break;
                }
                p=p->next;//没有查到则继续,赋予下一个结点
            }
        }
        return p;
    }
    //插入结点,指定在数据h之后加入e
    void InsertLinkList(LinkList list,int h,int e)
    {
        LinkList p=NULL,next;
        if(list==NULL){
        cout<<"列表为空!";return;
        }
        p=SearchLinkList(list,h);
        if(p==NULL){
            cout<<"所要查询的结点不存在!";return;
        }
        next=p->next;//h所在结点的下一个结点
        LinkList n=(NODE *)malloc(sizeof(NODE));//新生成个结点指针
        n->data=e;
        n->next=next;
        p->next=n;//将结点p的下一个结点置为新的结点
    }
    //删除结点
    void DeleteLinkList(LinkList list,int e)
    {
        if(list==NULL){
        cout<<"列表为空!";return;
        }
        LinkList f=list,p;
        while(f!=NULL){
            if(f->next!=NULL&&(f->next)->data==e)//判断是否是e所在结点前面的结点
            {
                p=f->next;
                f->next=f->next->next;//f-e所在结点-下一个结点
                f=f->next->next;
                free(p);//释放e所在结点
            }else{
                f=f->next;
            }
        }
    }
    道之所在,虽千万人吾往矣
  • 相关阅读:
    推荐:Markdown编辑软件 --- 小书匠
    GoldenDict词典配置
    ivew admin
    FineUI学习网址
    博客主题说明网址
    Xshell,Xftp免费版下载方法
    linux 常用命令及操作
    Oracle数据库随机取某条记录的一个字段值
    service和ingress
    centos7离线安装docker (二进制)
  • 原文地址:https://www.cnblogs.com/kongdf/p/2642282.html
Copyright © 2011-2022 走看看