首页 > 其他分享 >数据结构第二次上机

数据结构第二次上机

时间:2022-10-12 17:46:39浏览次数:61  
标签:Insert NULL return 上机 int next LinkList 第二次 数据结构

#include <stdio.h>
#include <stdlib.h>

typedef struct LinkNode{
    int data;
    struct LinkNode* next;

}LinkNode,* LinkList;

void InitLinkList(LinkList& L)//初始化一个空表
{
    L=(LinkList)malloc(sizeof(LinkNode));
    L->next=NULL;
}

void Insert_head(LinkList &L,int e)//利用头插法 插入e
{
    LinkList s=(LinkList)malloc(sizeof(LinkNode));
    s->data=e;
    s->next=L->next;
    L->next=s;
}

void Insert_end(LinkList &L,LinkList &p,int e)//利用尾插法 插入e
{
    LinkList s=(LinkList)malloc(sizeof(LinkNode));
    s->data=e;
    s->next=NULL;
    p->next=s;
    p=p->next;
}


void PrintLinkList(LinkList L)//打印链表 方便测试
{
    L=L->next;
    while(L!=NULL)
    {
        printf("%4d",L->data);
        L=L->next;
    }
    printf("\n");
}

LinkList LocationLinkList(LinkList L,int i)//按位置查找  查找链表中第i个位置的元素
{
    L=L->next;
    int j=1;
    while(L!=NULL)
    {
        if(j==i)
        {
            return L;
        }
        L=L->next;
        j++;
    }

    return NULL;
}

int LocateLinkList(LinkList L,int e)//按值查找,查找元素e在表中的位置
{
    L=L->next;
    int j=1;
    while(L!=NULL)
    {
        if(L->data==e)
        {
            return j;
        }
        L=L->next;
        j++;
    }
    return -1;
}

bool Insert(LinkList &L,int i,int e)//在第i个位置 前插入e
{
    LinkList p=LocationLinkList(L,i-1);//找到插入位置的前一个结点
    if(p!=NULL||p->next!=NULL)
    {
        LinkList s=(LinkList)malloc(sizeof(LinkNode));
        s->data=e;
        s->next=p->next;
        p->next=s;
        return true;
    }
    return false;
}

bool DelLinkList(LinkList &L,int i)//删除第i个位置的元素
{
    LinkList p=LocationLinkList(L,i-1);//找到删除位置的前一个结点
    if(p!=NULL||p->next!=NULL)
    {
        LinkList q=p->next;
        p->next=q->next;
        free(q);
        return true;
    }
    return false;
}

int main()
{
    LinkList L;
    InitLinkList(L);
    LinkList p=L;//尾插法的指向最后一个元素的指针
    //Insert_head(L,5);
    //Insert_head(L,6);
    Insert_end(L,p,44);
    Insert_end(L,p,33);
    Insert_end(L,p,22);
    Insert_end(L,p,11);
    PrintLinkList(L);
    
    LinkList q=LocationLinkList(L,4);
    printf("q->data=%d\n",q->data);

    int m2=LocateLinkList(L,10);

    if(m2!=-1)
        printf("m2=%d\n",m2);
    else 
        printf("表中无该数据!\n");

    Insert(L,4,55);
    PrintLinkList(L);
    DelLinkList(L,4);
    PrintLinkList(L);
    return 0;
}

标签:Insert,NULL,return,上机,int,next,LinkList,第二次,数据结构
From: https://www.cnblogs.com/wlb429/p/16785382.html

相关文章

  • java 数据结构 ArrayList
    importjava.util.ArrayList;importjava.util.Collections;/***java数据结构ArrayList*importjava.util.ArrayList;//引入ArrayList类*ArrayList<E>objectNa......
  • Java 数据结构 LinkedList
    importjava.util.LinkedList;/***Java数据结构LinkedList*链表(Linkedlist)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点......
  • 搜索中常见数据结构与算法探究(二)
    本文介绍了几个常见的匹配算法,通过算法过程和算法分析介绍了各个算法的优缺点和使用场景,并为后续的搜索文章做个铺垫;读者可以通过比较几种算法的差异,进一步了解匹配算法演进......
  • 搜索中常见数据结构与算法探究(二)
    本文介绍了几个常见的匹配算法,通过算法过程和算法分析介绍了各个算法的优缺点和使用场景,并为后续的搜索文章做个铺垫;读者可以通过比较几种算法的差异,进一步了解匹配算法演......
  • 数据结构 玩转数据结构 2-7 动态数组
    0课程地址https://coding.imooc.com/lesson/207.html#mid=13412 1重点关注1.1数组动态伸缩参见3.1coding 1.2泛型数组参见3.2......
  • 数据结构 链表(第7、8天)
    链表这里面的链表题比较简单,只要会遍历链表、删除链表节点、反转链表这些基本操作就行。必要时可以画图辅助理解。141.环形链表给定一个链表,判断是否有环。思路:快慢指......
  • 搜索中常见数据结构与算法探究(一)
    1前言ES现在已经被广泛的使用在日常的搜索中,Lucene作为它的内核值得我们深入研究,比如FST,下面就用两篇分享来介绍一些本文的主题:第一篇主要介绍数据结构和算法基础和分析方......
  • 数据结构—抽象数据类型的表示与实现
    1、预定义常量及类型://函数结果状态代码#defineOK1#defineERROR0#defineOVERFLOW-2//Status是函数返回值类型,其值是函数结果状态代码typedefintStatus;2......
  • 数据结构—基本概念和术语
    1、数据    数据(Data)是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。2、数据元素    数据元素(DataElement)是数据的基本单......
  • 数据结构在实际开发(c r u d)中的作用
    1、线性表和map、这两个东西基本上做各种curd应用很够了;栈除了做一些复杂的算法以外不存在什么开发用处、而队列基本上都用队列中间件来完成、自己程序里就没必要弄队......