数据结构(李清云)实验二答案

链表操作实战:头插法、尾插法与删除算法

已知不带头结点的链表结构定义及头插法建表、尾插法建表和打印链表等函数定义如下(详见slnklist.h文件),基于该文件完成实验题1~实验题4.

#include <stdio.h>

#include <stdlib.h>

#define maxsize 100

typedef int datatype;

typedef struct link_node{

    datatype info;

    struct link_node *next;

}node;

typedef node *linklist;

/********************************************/

/*函数名称:creatbystack()                  */

/*函数功能:头插法建立单链表                */

/********************************************/

linklist creatbystack()

{

    linklist head,s;

    datatype x;

    head=NULL;

    printf("请输入若干整数序列:\n");

    scanf("%d",&x);

    while(x!=0)            /*以0结束输入*/

    {

        s=(linklist)malloc(sizeof(node));  /*生成待插入结点*/

        s->info=x;

        s->next=head;           /*将新结点插入到链表最前面*/

        head=s;

        scanf("%d",&x);

    }

    return head;        /*返回建立的单链表*/

}

/********************************************/

/*函数名称:creatbyqueue()                  */

/*函数功能:尾插法建立单链表                */

/********************************************/

linklist creatbyqueue()

{

    linklist head,r,s;

    datatype x;

    head=r=NULL;

    printf("请输入若干整数序列:/n");

    scanf("%d",&x);

    while(x!=0)              /*以0结束输入*/

    {

        s=(linklist)malloc(sizeof(node));

        s->info=x;

        if(head==NULL)       /*将新结点插入到链表最后面*/

            head=s;

        else r->next=s;

        r=s;

        scanf("%d",&x);

    }

    if(r) r->next=NULL;

    return head;           /*返回建立的单链表*/

}

/********************************************/

/*函数名称:print()                         */

/*函数功能:输入不带头结点的单链表          */

/********************************************/

void print(linklist head)

{

    linklist p;

    int i=0;

    p=head;

    printf("List is:\n");

    while(p)

    {

        printf("%5d",p->info);

        p=p->next;

        i++;

        if(i%10==0)  printf("\n");

    }

    printf("\n");

}

/********************************************/

/*函数名称:delList()                       */

/*函数功能:释放不带头结点的单链表                */

/********************************************/

void delList(linklist head)

{

    linklist p=head;

    while(p)

    {

        head=p->next;

        free(p);

        p=head;

    }

}

(1)编写函数linklist delx(linklist head,datatype x),删除不带头结点单链表head中的第一个值为x的结点,并构造测试用例进行测试(实验代码详见lab2_01.c)

#include <stdio.h>

#include <stdlib.h>

typedef int datatype;

typedef struct link_node{

    datatype info;

    struct link_node *next;

}node;

typedef node *linklist;

linklist creatbystack()

{

    linklist head,s;

    datatype x;

    head=NULL;

### Unreal Engine 4 建模操作指南 在 Unreal Engine 4 (UE4) 中,虽然其主要功能集中在游戏开发和实时渲染上,但它也提供了强大的工具支持建模工作流。以下是关于 UE4 中建模的操作指南: #### 使用内置编辑器进行基础几何体创建 UE4 提供了一个直观的关卡编辑器来快速生成基本形状(如立方体、球体等)。这些对象可以作为初始模型的基础[^1]。 ```cpp // 创建静态网格物体实例化代码示例 FActorSpawnParameters SpawnParams; AStaticMeshActor* NewMesh = GetWorld()->SpawnActor<AStaticMeshActor>(AStaticMeshActor::StaticClass(), Transform, SpawnParams); if (NewMesh != nullptr) { UStaticMeshComponent* MeshComp = Cast<UStaticMeshComponent>(NewMesh->GetRootComponent()); if (MeshComp != nullptr && StaticMeshAssetPath.IsValid()) { MeshComp->SetStaticMesh(LoadObject<UStaticMesh>(nullptr, *StaticMeshAssetPath.ToString())); } } ``` #### 导入外部3D模型至UE4 对于更复杂的模型需求,则通常依赖第三方软件完成精细雕刻后再导入到UE4当中。这里推荐利用 VRM4U 插件简化特定格式比如 `.vrm` 文件加载流程[^2]。 #### 动画制作与骨骼绑定 除了简单的刚体外貌构建之外,如果涉及到动态人物或者机械装置的话还需要考虑动画系统以及相应的骨架设置等问题,在这方面官方文档给出了详尽指导说明如何一步步实现预期效果。 #### 材质贴图设定 为了让所建立起来的对象看起来更加真实可信,材质的选择至关重要。可以通过蓝图可视化脚本或者是C++编程方式自定义复杂交互逻辑下的表面属性表现形式。 --- ### 注意事项 尽管上述方法能够满足大部分情况下对于三维造型的需求,但如果追求极致品质可能还是得借助Maya、Blender这样的专业级应用程序辅助完成最终作品再同步回引擎内部环境做进一步优化调整处理。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值