鱼C论坛

 找回密码
 立即注册
查看: 1498|回复: 3

求助

[复制链接]
发表于 2020-10-8 22:45:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;

typedef struct LNode
{
        int data;
        struct LNode *next;
}LNode,* LinkList;

Status InitList_L(LinkList &L)
{
        L=new LNode;
        L->next=NULL;
        return OK;
}

Status GetElem_L(LinkList L,int i,ElemType &e)
{
        int j;
        LNode *p;
        p=L->next;
        j=1;
        while(j<i&&p)
        {
                p=p->next;
                ++j;
        }
        if(!p||j>i) return ERROR;
        e=p->data;
        return OK;
}

LNode *LocateElem_L(LinkList L,ElemType e)
{
        LNode *p;
        p=L->next;
        while(p&&p->data!=e)
        p=p->next;
        return p;
}

Status ListInsert_L(LinkList &L,int i,int &e)
{
       int j;
           LNode *p,*s;
           p=L;
           j=0;
           while(p&&j<i-1)
           {
             p=p->next;
             ++j;
           }         
           if(!p||j>i-1) return ERROR;
           s=new LNode;
           s->data=e;
           s->next=p->next;
           p->next=s;
           return OK;
}

Status ListDelete_L(LinkList &L,int i,ElemType &e)
{
        LNode *p,*q;
        int j;
        p=L;
        j=0;
        while(p->next&&j<i-1)
        {
                p=p->next;
                ++j;
        }
        if(!(p->next)||j>i-1) return ERROR;
        q=p->next;
        e=q->data;
        delete q;
        return OK;
}

Status ListDelete_L(LinkList &L,int i,ElemType &e)
{
        LNode *p,*q;
        int j;
        p=L;
        j=0;
        while(p->next&&j<i-1)
        {
                p=p->next;
                ++j;
        }
        if(!(p->next)||j>i-1) return ERROR;
        q=p->next;
        p->next=q->next;
        e=q->data;
        delete q;
        return OK;
}

void CreateList_F(LinkList &L,int n)
{
        LNode *p;
        L=new LNode;
        L->next=NULL;
        cout<<"请输入"<<n<<"个数"<<endl;
        for(int i=n;i>0;--i)
        {
                p=new LNode;
                cin>>p->data;
                p->next=L->next;
                L->next=p;
        }
}

void CreateList_L(LinkList &L,int n)
{
        LNode *r,*p;
        L=new LNode;
        L->next=NULL;
        r=L;
        cout<<"请输入"<<n<<"个数\n";
        for(int i=0;i<n;i++)
        {
                p=new LNode;
                cin>>p->data;
                p->next=NULL;
                r->next=p;
                r=p;
        }
}
int main()
{
        int res,a,b,choose;
        LNode *L,*p;
        cout<<"1,建立链表"<<endl;
        cout<<"2,输入数据"<<endl;       
        cout<<"3,按位置查找"<<endl;
        cout<<"4,按值查找"<<endl;
        cout<<"5,链表的插入"<<endl;
        cout<<"6,链表的删除"<<endl;
        cout<<"7,输出数据"<<endl;
        cout<<"0,退出"<<endl<<endl;
        choose=-1;
        while(choose!=0)
        {
                cout<<"请选择";
                cin>>choose;
                switch(choose)
                {
                        case 1:
                                if(InitList_L(L))
                                cout<<"成功建立链表!\n\n";
                            break;
                        case 2:
                                CreateList_L(L,10);
                                cout<<"成功创建链表\n\n";
                                break;
                        case 3:
                                cout<<"请输入一个位置来查找";
                                cin>>a;
                                if(GetElem_L(L,a,res))
                                cout<<"查找成功!第"<<a<<"个数是:"<<res<<"\n\n";
                                else
                                cout<<"查找失败\n\n";
                                break;
                        case 4:
                            cout<<"请输入一个数来查找:";
                                cin>>b;
                                if(LocateElem_L(L,b)!=NULL)
                                cout<<"查找成功\n\n";
                                else
                                cout<<"查找失败\n\n";
                                break;
                        case 5:
                            cout<<"请输入两个数分别代表插入位置和数值:";
                                cin>>a>>b;
                                if(ListInsert_L(L,a,b))
                                cout<<"成功将"<<b<<"插入到"<<a<<"个位置\n\n";
                                else
                                cout<<"插入失败\n\n";
                        case 6:
                            cout<<"请输入一个位置删除";
                                cin>>a;
                                if(ListDelete_L(L,a,res))
                                cout<<"删除成功,删除的数位:"<<res<<"\n\n";
                                else
                                cout<<"删除失败\n\n";
                                break;
                        case 7:
                            cout<<"链表里的数为:\n";
                                p=L->next;
                                while(p)
                                {
                                        cout<<p->data<<" ";
                                        p=p->next;
                            }         
                            cout<<endl;
                            break;
                }
         }
         return 0;
}

33.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-9 08:58:35 | 显示全部楼层
本帖最后由 LuLD 于 2020-10-9 09:03 编辑

Snipaste_2020-10-09_09-03-35.bmp

函数一样的,删掉一个试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-10 22:19:32 | 显示全部楼层
LuLD 发表于 2020-10-9 08:58
函数一样的,删掉一个试试

谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-12 13:03:06 | 显示全部楼层
一上来就是结构体的新手,佩服佩服!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-10 23:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表