返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >【Dev-c++】C语言数据结构实验——线性表
  • 634
分享到

【Dev-c++】C语言数据结构实验——线性表

链表服务器java 2023-10-06 09:10:52 634人浏览 泡泡鱼
摘要

实验一 线性表 一、实验目的     1、深刻理解线性结构的特点,以及在计算机内的两种存储结构。     2、熟练掌握线性表的顺序存储结构和链式存储结构,及其它们的基本操作,重点掌握查找、插入和删除等操作。 二、实验要求     1、认真

实验一 线性表

一、实验目的

    1、深刻理解线性结构的特点,以及在计算机内的两种存储结构。

    2、熟练掌握线性表的顺序存储结构和链式存储结构,及其它们的基本操作,重点掌握查找、插入和删除等操作。

二、实验要求

    1、认真阅读程序,将未完成的代码补全(红色部分)。

2、上机调试,并运行程序。

3、保存和截图程序的运行结果,并结合程序进行分析。

三、实验内容和基本原理

    1、实验1.1 顺序表的操作

    利用顺序表存储方式实现下列功能(见参考程序1):

    1)通过键盘输入数据建立一个线性表,并输出该线性表。

    如,依次输入元素25,21,46,90,12,98。

    2)根据屏幕菜单的选择,进行数据的插入、删除和查找,并在插入或删除数据后,再输出线性表。如,在第2个位置上插入元素43,然后输出顺序表。删除顺序表第4个元素,输出改变的顺序表。

    3)在屏幕菜单中选择0,结束程序的运行。

    基本原理:在顺序表的第i个位置上插入一个元素时,必须先将线性表的第i个元素之后的所有元素依次后移一个位置,以便腾空一个位置,在把新元素插入到该位置。当要删除第i个元素时,只需将第i个元素之后的所有元素前移一个位置。

    2、实验1.2 链表的操作 (见参考程序2)

     利用链式存储的方式实现线性表的创建、插入、删除和查找等操作。

    1)请输入初始时链表长度,如输入5。

    如,依次输入元素abcdf,然后输出链表。

    2)删除一个元素,如输入c。

    3)插入一个元素,如输入e。

    4)按关键字查找元素。如输入e。

    5)按序号查找元素。如输入3。

    基本原理:在带头结点的单链表中第i(从1开始计数)个位置之后插入元素、创建带头结点的单链表、在带头结点的单链表中删除第i个位置的元素等,最后输出单链表的内容。

四、实验步骤

    1、顺序表的操作

    1)运行Visual c++6.0,创建一个c++源文件

    提示:选择菜单栏中的“文件”下拉菜单中的“新建”按钮,在弹出的对话框中,选择“文件”子菜单中的“C/C++ Source File”。选中“Add to project”复选框。然后给一个文件名,如“sy1”,并保存在“桌面/姓名学号/”。

    2)将参考程序复制到文档窗口,选择菜单栏中的“组建”下拉菜单中的“编译”选项,在弹出的对话框中选择“是”。

    3)将未完成的代码补充完整,然后选择菜单中的“组建”下拉菜单中的“执行”,或者直接点击工具栏中的“ ”进行连接,调试和运行。

    4)运行程序,并检查插入、删除和查找等操作是否有误,正确后截图到Word文档中指定位置。

​​​​​​​ ​​​​​ 

图1

    说明:当程序运行错误时,如图2所示,查看组建窗口,双击出错部分(单击窗口然后滑动查看),逐条更改直到程序运行无误。

                     ​​​​​​​ 

图2

//参考程序1/       }       while(k!=0);       printf("\n              按回车键,返回...\n");       ch=getchar();}//建立线性表void creat_list(SqList *L){       int i;       printf("请输入线性表的长度: ");       scanf("%d",&L->length);       for(i=0;ilength;i++)       {              printf("数据 %d =",i);       scanf("%d",&(L->a[i]));}}//输出线性表void out_list(sqlist L){       int i;       for(i=0;i<=L.length-1;i++)              printf("%10d",L.a[i]);}//在线性表的第i个位置插入元素evoid insert_sq(SqList *L,int i,ElemType e){       int j;       if(L->length==MAXSIZE)              printf("线性表已满!\n");       else {              if(i<1||i>L->length+1)       printf("输入位置错!\n");              else {              for(j=L->length-1;j>=i-1;j--)                     L->a[j+1]=L->a[j];L->a[i-1]=e;               L->length++;              }       }}//删除第i个元素,返回其值ElemType delete_sq(SqList *L,int i){       ElemType x;       int j;       if(L->length==0)              printf("空表!\n");       else if(i<1||i>L->length)       {              printf("输入位置错!\n");              x=-1;       }       else       {              x=L->a[i-1];              for(j=i;j<=L->length-1;j++)L->a[j-1]=L->a[j];               L->length--;       }       return(x);}//查找值为e的元素,返回它的位置int locat_sq(SqList L,ElemType e){       int i=0;       while((i<=L.length)&&(L.a[i]!=e) ) i++;       if(i<=L.length-1)              return(i+1);}

    2、链表的操作。

   同顺序表一样。要求读懂程序,然后将未完成的代码补全(红色部分)。

                       

//参考程序2/     free(q);           //释放该元素空间 return True;}BOOL ListFind_keyword(LinkList v,char e,int &i){//在单链表中查找关键字为e的元素,成功返回//True,并用i返回该元素位置, //失败返回False i=1; LinkList p; p=v->next; while((p->data!=e)&&(p->next!=NULL))//p指//针指向下一个,直到    {p=p->next;  i++;}                        //找到或到链表尾为止 if(p->data!=e)                      //该元//素在链表中不存在     return False; else return True;}BOOL ListFind_order(LinkList v,char &e,int i){//在单链表中查找第i个元素,成功返回True,//并用e返回该元素值, //失败返回False LinkList p; int j=0; p=v; while((p->next!=NULL)&&(jnext;++j;} if(j!=i) return False; //查找失败 else {e=p->data;       //查找成功,用e取得//该元素值       return True;      }}void ListPrint(LinkList v)  {//显示链表所有元素 LinkList q; q=v->next; printf("链表所有元素:"); while(q!=NULL)   {printf("%c ",q->data);q=q->next;} printf("\n");}.

来源地址:https://blog.csdn.net/m0_52474147/article/details/125955952

--结束END--

本文标题: 【Dev-c++】C语言数据结构实验——线性表

本文链接: https://lsjlt.com/news/424018.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 【Dev-c++】C语言数据结构实验——线性表
    实验一 线性表 一、实验目的     1、深刻理解线性结构的特点,以及在计算机内的两种存储结构。     2、熟练掌握线性表的顺序存储结构和链式存储结构,及其它们的基本操作,重点掌握查找、插入和删除等操作。 二、实验要求     1、认真...
    99+
    2023-10-06
    链表 服务器 java
  • C语言数据结构之线性表的链式存储结构
    1.什么是线性表的链式存储结构 —链表 存储结点:包括元素本身的信息,还有元素之间的关系逻辑的信息 这个结点有:数据域和指针域 一个指针域:指向后继结点, 单链表 二个指针域: 指向...
    99+
    2024-04-02
  • C语言数据结构线性表教程示例详解
    目录线性表顺序表线性表 数据结构里我们时常看到什么什么表,线性表是最基本、最简单、也是最常用的一种数据结构,其他各种表的万恶之源就是这个线性表,他是个啥其实顾名思义: 一个线性表是n...
    99+
    2024-04-02
  • C语言数据结构中的线性表怎么使用
    这篇文章主要介绍“C语言数据结构中的线性表怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言数据结构中的线性表怎么使用”文章能帮助大家解决问题。一、分文件编写1、分文件编写概念在Visua...
    99+
    2023-06-30
  • C语言超详细讲解数据结构中的线性表
    目录前言一、分文件编写1、分文件编写概念2、代码展示二、动态分布内存malloc1、初识malloc2、使用方法三、创建链表并进行增删操作1、初始化链表2、在链表中增加数据3、删除链...
    99+
    2024-04-02
  • C语言数据结构不挂科指南之线性表详解
    目录基本概念线性表的顺序存储线性表的顺序存储的时间复杂度线性表的链接存储线性表在单链表上实现基本运算初始化初始化成功,开始插入元素单链表的时间复杂度循环链表双向循环链表期末考试基本概...
    99+
    2024-04-02
  • 如何理解C语言数据结构中线性表的链式存储结构
    如何理解C语言数据结构中线性表的链式存储结构,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.什么是线性表的链式存储结构 —链表存储结点:包括元素本身的信息,还有元素之间的关系...
    99+
    2023-06-21
  • 数据结构——栈(C语言)
    需求:无 栈的概念: 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端为栈底。栈中的数据元素遵守后进先出(LIFO)原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈...
    99+
    2023-09-04
    数据结构 c语言 经验分享
  • C语言数据结构之单链表的实现
    目录一.为什么使用链表二.链表的概念三.链表的实现3.1 创建链表前须知3.2 定义结构体3.3 申请一个节点3.4 链表的头插3.5 链表的尾插3.6 链表的尾删3.7 链表的头删...
    99+
    2024-04-02
  • 数据结构C语言链表的实现介绍
    目录前言函数1. 链表初始化2. 计算链表长度3. 打印链表4.计算链表长度5. 删除链表中指定位置节点6. 向链表中指定位置插入节点7. 全代码+运行效果前言 需要用到的函数库 ...
    99+
    2024-04-02
  • C语言数据结构哈希表详解
    #include <stdio.h> #include <stdlib.h> #include <string.h> // 哈...
    99+
    2024-04-02
  • C语言编程数据结构线性表之顺序表和链表原理分析
    目录线性表的定义和特点线性结构的特点线性表顺序存储顺序表的元素类型定义顺序表的增删查改初始化顺序表扩容顺序表尾插法增加元素头插法任意位置删除任意位置添加线性表的链式存储数据域与指针域...
    99+
    2024-04-02
  • C语言数据结构顺序表怎么构造
    本篇内容介绍了“C语言数据结构顺序表怎么构造”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言在学习链表之前先掌握顺序表什么是顺序表?顺序表...
    99+
    2023-06-30
  • C语言数据结构之单链表怎么实现
    本文小编为大家详细介绍“C语言数据结构之单链表怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言数据结构之单链表怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一.为什么使用链表在学习链表以前,...
    99+
    2023-07-02
  • C语言数据结构哈希表是什么
    这篇文章将为大家详细讲解有关C语言数据结构哈希表是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。#include <stdio.h>#include <stdli...
    99+
    2023-06-29
  • C语言数据结构之顺序表和单链表
    一、顺序表的创建、删除和插入 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> struct sqlist { ...
    99+
    2024-04-02
  • 如何进行数据结构C语言链表的实现
    这篇文章将为大家详细讲解有关如何进行数据结构C语言链表的实现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言需要用到的函数库#include<stdio.h>#include&...
    99+
    2023-06-22
  • C语言实现通用数据结构之通用链表
    本文实例为大家分享了c语言实现通用数据结构之通用链表的具体代码,供大家参考,具体内容如下 忽然想起来,大概在两年之前学习C语言的时候,曾经用C语言写过一些通用的数据结构。主要也就实现...
    99+
    2024-04-02
  • C语言数据结构实例讲解单链表的实现
    目录1、单链表2、单链表的实现头文件函数的实现(1)打印链表(2)动态申请结点(3)尾插(4)头插(5)尾删(6)头删(7)查找(8)在pos之前插入(9)删除pos(10)在pos...
    99+
    2024-04-02
  • c语言数据结构有哪些
    c语言数据结构有数组、结构体、链表、栈、队列、树、图、哈希表、堆和链表。数据结构是指将数据按照一定的方式组织和存储的方法。它是计算机科学中的重要概念,用来描述和解决实际问题中的数据组织和处理问题。数据结构可以分为线性结构和非线性结构。线性结...
    99+
    2023-08-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作