zoukankan      html  css  js  c++  java
  • 静态链表的合并

    typestruct.h

    #define MAX_SIZE 1000

    typedef struct {
    int data;
    int cur;
    }compont,SLinkLIist[MAX_SIZE];

    //初始化一个空的静态链表
    void InitSpace_SL(SLinkLIist S);

    //从空闲节点中取一个节点
    int Malloc_SL(SLinkLIist L);

    //将删除的元素释放保存在空闲节点的第一个位置
    void Free_SL(SLinkLIist L, int k);

    void difference(SLinkLIist L, int *S);

    functionRealize.c

    #include "typeStruct.h"
    #include "stdio.h"
    #include "stdlib.h"
    //初始化一个空的静态链表
    void InitSpace_SL(SLinkLIist S) {

    S[0].cur = 1;//头节点属于元素的节点
    for (int i = 1; i < MAX_SIZE - 1; i++)
    {
    S[i].cur = i + 1;
    }
    S[MAX_SIZE - 1].cur = 0;
    }

    //从空闲节点中取一个节点
    int Malloc_SL(SLinkLIist L) {

    int i = L[0].cur;

    if (L[0].cur) {
    L[0].cur = L[i].cur;
    }
    return i;
    }

    //将删除的元素释放保存在空闲节点的第一个位置
    void Free_SL(SLinkLIist L, int k) {

    L[k].cur = L[0].cur;
    L[0].cur = k;
    }

    void difference(SLinkLIist L) {

    int m,n,i,r,b,p,k,s;

    InitSpace_SL(L);
    //返回开辟空间的下标
    s = Malloc_SL(L);//生成S的头结点
    r = s;//r指向S的当前最后结点

    //输入链表A和链表B中的元素个数

    printf("请输入链表A和链表B元素的个数 ");

    scanf("%d,%d",&m,&n);

    printf("请输入链表A元素的值 ");

    //生成链表A
    for (int j = 1; j <=m; j++)
    {
    i = Malloc_SL(L);
    //输入元素的值
    scanf("%d",&L[i].data);
    L[r].cur = i;
    r = i;

    }

    L[r].cur = 0;

    printf("请输入链表B元素的值 ");

    for (int j =1 ; j <=n; j++)
    {
    scanf("%d",&b);
    p = s;
    k = L[s].cur;
    //判断元素是否存在链表A中
    while (k!=L[r].cur&&L[k].data!=b)
    {
    p = k;
    k = L[k].cur;

    }
    //如果不存在链表LA中则插入链表
    if (k == L[r].cur) {
    i = Malloc_SL(L);
    L[i].data = b;
    L[i].cur = L[r].cur;
    L[r].cur = i;
    }
    else {

    //如果存在链表LA中则删除该元素
    L[p].cur = L[k].cur;
    Free_SL(L,k);
    if (r==k)
    {
    r = p;

    }
    }

    }

    }

    staticLinkListUnion.c

    #include "typeStruct.h"

    void main() {

    SLinkLIist L;
    int S=0;
    difference(L,&S);

    }

  • 相关阅读:
    Linux 查看进程文件文件位置
    硬盘io检查
    centos 一些需要注意的问题
    docker 日常使用问题
    Linux命令行访问网站工具
    开箱即用instantbox
    docker 使用
    在js中关于同名变量和函数的地位争夺问题
    玩转图片上传————原生js XMLHttpRequest 结合FormData对象实现的图片上传
    在vue组件中style scoped中遇到的坑
  • 原文地址:https://www.cnblogs.com/paulversion/p/7570064.html
Copyright © 2011-2022 走看看