噜啦噜啦噜呼呼呼 2023-10-03 10:59 采纳率: 70.7%
浏览 8
已结题

单链表基本算法的测试

大家帮我看一下,数据结构教程,将单链表的基本运算算法保存到了linknode.cpp文件夹中(即这里的第二个代码),第一个代码是试验“7.按元素值查找,第一个值为e的元素的逻辑序号”的,为什么输出结果没有显示啊?


#include<stdio.h>
#include"linknode.cpp"
int main()
{
    int a[5]={1,5,8,10,3};
    LinkNode *L;   //单链表头指针L
    printf("由数组a建立(头插法)的单链表为:\n"); 
    CreateListF(L,a,5);  //注意:这里不要写a[5],写为a即可 
    DispList(L);
    printf("第一个值为5的元素的逻辑序号为:%d\n",LocateElem(L,5));
    printf("\n");
    return 0;
}
                       //单链表 

#include<stdio.h>
#include<malloc.h>
typedef int ElemType; 
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LinkNode;

//由数组元素a[0...n-1]创建单链表L
//头插法
void CreateListF(LinkNode *&L,ElemType a[],int n)
{
    LinkNode *s;
    L=(LinkNode *)malloc(sizeof(LinkNode));
    L->next=NULL; //创建头结点 
    for(int i=0;i<n;i++)
    {
        s=(LinkNode *)malloc(sizeof(LinkNode));
        s->data=a[i];
        s->next=L->next;
        L->next=s; //将结点s插入原首结点前,头结点后 
    }
} 
//尾插法
void CreateListR(LinkNode *&L,ElemType a[],int n)
{
    LinkNode *s,*r;
    L=(LinkNode *)malloc(sizeof(LinkNode));  //创建头结点
    r=L;   //r始终指向尾结点 
    for(int i=0;i<n;i++)
    {
        s=(LinkNode *)malloc(sizeof(LinkNode));
        s->data=a[i];
        r->next=s;
        r=s; //将结点s插入结点r后 
    }
    r->next=NULL; 
}

//单链表的基本运算算法
//1.初始化线性表
void InitList(LinkNode *&L)  
{
    L=(LinkNode *)malloc(sizeof(LinkNode));
    L->next=NULL;  //创建头结点 
}
//2.销毁线性表
void DestroyList(LinkNode *&L)  
{
    LinkNode *pre=L,*p=L->next;  //pre指向p的前驱结点 
    while(p!=NULL) 
    {
        free(pre);
        pre=p;
        p=p->next;       //pre,p同步后移一个结点 
    }
    free(pre);
}
//3.判断线性表是否为空表
bool ListEmpty(LinkNode *L)   
{
    return(L->next==NULL);
}
//4.求线性表的长度
int ListLength(LinkNode *L)   
{
    int n=0;
    LinkNode *p=L;
    while(p->next!=NULL)
    {
        n++;
        p=p->next;
    }
    return n;
}
//5.输出线性表
void DispList(LinkNode *L)   
{
    LinkNode *p=L->next;
    while(p!=NULL)
    {
        printf("%-4d",p->data);
        p=p->next;
    }
    printf("\n");
}
//6.按序号求线性表中的元素,获取线性表中第i(1<=i<=n)个元素的值 ,并存到e中 
bool GetElem(LinkNode *L,int i,ElemType &e)
{
    int j=0;
    LinkNode *p=L;
    if(i<1) return false;
    while(j<i&&p!=NULL)  //查找第i个结点p 
    {
        j++;
        p=p->next;
    }
    if(p==NULL)
        return false;
    else
    {
        e=p->data;
        return true;
    }
} 
//7.按元素值查找,第一个值为e的元素的逻辑序号(从1开始) 
int LocateElem(LinkNode *L,ElemType e)
{
    int i=1;
    LinkNode *p=L->next;
    while(p->data!=e||p!=NULL)
    {
        p=p->next;
        i++;
    }
    if(p==NULL)
        return (0);
    else
        return (i);
} 
//8.插入数据元素,在L的第i个位置插入元素e 
bool ListInsert(LinkNode *&L,int i,ElemType e)
{
    int j=0;
    LinkNode *p=L,*s;
    if(i<1) return false;  //参数i错误时返回false 
    while(p!=NULL&&j<i-1)  //查找第i-1个结点p 
    {
        p=p->next;
        j++; 
    }
    if(p==NULL)
        return false;
    else
    {
        s=(LinkNode *)malloc(sizeof(LinkNode));
        s->data=e;
        s->next=p->next;
        p->next=s;
        return true;
    }
} 
//9.删除数据元素,删除L的第i个元素,并存到e 
bool ListDelete(LinkNode *&L,int i,ElemType &e)
{
    int j;
    LinkNode *p=L,*q; 
    if(i<1) return false;
    while(p!=NULL&&j<i-1)  //查找第i-1个结点p 
    {
        p=p->next;
        j++;
    }
    if(p==NULL)
        return false;
    else
    {
        q=p->next;    //q指向第i个结点 
        if(q==NULL) 
            return false;
        else
        {
            p->next=q->next;
            e=q->data;
            free(q);
            return true;
        }
    }
} 

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-03 12:04
    关注

    【相关推荐】




    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月9日
  • 创建了问题 10月3日

悬赏问题

  • ¥50 求解vmware的网络模式问题
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?