前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >实验一 线性表的基本操作

实验一 线性表的基本操作

作者头像
谙忆
发布于 2021-01-20 07:55:41
发布于 2021-01-20 07:55:41
72900
代码可运行
举报
文章被收录于专栏:程序编程之旅程序编程之旅
运行总次数:0
代码可运行

一、线性结构的顺序表基本操作 实验目的 1.学会定义单链表的结点类型、线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。 2.掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算。 3.掌握对多函数程序的输入、编辑、调试和运行过程。 实验要求 1.预习C语言中结构体的定义与基本操作方法。 2.对顺序表的每个基本操作用单独的函数实现。 3.编写完整程序完成下面的实验内容并上机运行。 实验内容 1.编写程序实现顺序表的下列基本操作: (1)初始化顺序表La。 (2)将La置为空表。 (3)销毁La。 (4)在La中插入一个新的元素。 (5)删除La中的某一元素。 (6)在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0。 (7)打印输出La中的元素值。 2.(选做)编写程序完成下面的操作: (1)构造两个顺序线性表La和Lb,其元素都按值非递减顺序排列。 (2)实现归并La和Lb得到新的顺序表Lc,Lc的元素也按值非递减顺序排列。 (3)假设两个顺序线性表La和Lb分别表示两个集合A和B,利用union_Sq操作实现A=A∪B。 二、单链表基本操作(选做) 实验目的 1. 学会定义单链表的结点类型、线性表的链式存储类型,实现对单链表的一些基本操作和具体的函数定义,了解并掌握单链表的类定义以及成员函数的定义与调用。 2. 掌握单链表基本操作及两个有序表归并、单链表逆置等操作的实现。 实验要求 1.预习C语言中结构体的定义与基本操作方法。 2.对单链表的每个基本操作用单独的函数实现。 3.编写完整程序完成下面的实验内容并上机运行。 实验内容 1.编写程序完成单链表的下列基本操作: (1)初始化单链表La。 (2)在La中插入一个新结点。 (3)删除La中的某一个结点。 (4)在La中查找某结点并返回其位置。 (5)打印输出La中的结点元素值。 2.构造一个单链表L,其头结点指针为head,编写程序实现将L逆置。(即最后一个结点变成第一个结点,原来倒数第二个结点变成第二个结点,如此等等。)


附:代码 c++下运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h>
#include<stdlib.h>

//顺序表的定义:
#define ListSize 100//表空间大小可根据实际需要而定,这里假设为100
typedef int DataType;//DataType可以是任何相应的数据类型如int ,float,char.
typedef struct SeqList
{
    DataType data[ListSize];  //向量data 用于存放表节点
    int length;              // 当前的表达长度
}SeqList;

int main()
{
    struct SeqList L;
    int i,k,x,n;
//函数声明
    struct SeqList DeleteList(SeqList L,int i);
    struct SeqList InitList(struct SeqList L);
    struct SeqList CreateList(struct SeqList L,int n);
    struct SeqList InsertList(SeqList L,DataType x,int k);
    void PrintList(SeqList L);
    int LocateList(SeqList L,DataType x);
    //初始化表
    L=InitList(L);
//建立顺序表
    printf("输入表中元素数量n\n");
    scanf("%d",&n);
    L=CreateList(L,n);
    printf("输入的元素为:\n");
    PrintList(L);
//查找数据
    printf("输入需要查找的数据:\n");
    scanf("%d",&x);
    if(LocateList(L,x)==0)
        printf("该元素不存在。。。\n");
      else{
        printf("该元素的位置为:\n");
         printf("%d",LocateList(L,x));
      }

    printf("\n");
    //插入数据
    printf("输入插入的数据 x=");
    scanf("%d",&x);
    printf("输入插入的位置 k=");
    scanf("%d",&k);
    printf("\n插入 数据前的表:\n");//表插入前后对比性输出
    PrintList(L);
    L=InsertList(L,x,k);
    printf("\n插入 数据后的表:\n");//表插入前后对比性输出
    PrintList(L);
    //删除数据
        printf("输入删除的位置 k=");
    scanf("%d",&k);
    printf("\n删除 数据前的表:\n");//表删除前后对比性输出
    PrintList(L);
    L=DeleteList(L,k);
    printf("\n删除 数据后的表:\n");//表删除前后对比性输出
    PrintList(L);
    return 0;

}
//初始化顺序表
struct SeqList InitList(struct SeqList L)
{
    L.length=0;
    return L;
}
//顺序表的建立
struct SeqList CreateList(struct SeqList L,int n)
{
    int i;
    printf("请输入%d个元素:\n",n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&L.data[i]);
        L.length++;
    }
    return L;
}

void PrintList(SeqList L)
{
    int i;
    if(L.length==0)
    {
        printf("此表为空...\n");
        return ;
    }
    for(i=0;i<L.length-1;i++)
    {
        printf("%d ",L.data[i]);
    }
    printf("%d\n",L.data[i]);
}

int LocateList(SeqList L,DataType x)
{
    int i;
    if(L.length==0)
        printf("该顺序表为空。。。\n");
    for(i=0;i<L.length;i++)
    {   if(x==L.data[i])
            return i+1;
    //printf("**\n");
    }
    return 0;
}
struct SeqList InsertList(SeqList L,DataType x,int k)
{
    int i;
    if(k<0||k>L.length)
    {
        printf("输入位置非法。。");
        return L;
    }
    if(L.length==ListSize)
    {
        printf("表上溢,不能插入\n");
        return L;
    }
    for(i=L.length;i>=k;i--)
        L.data[i]=L.data[i-1];
    L.data[k-1]=x;
    L.length++;
    return L;
}

struct SeqList DeleteList(SeqList L,int i)
{
    int j;
    for(j=i-1;j<L.length;j++)
        L.data[j]=L.data[j+1];
    L.length--;
    return L;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015/11/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档