最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

数据结构实验指导书——线性表的操作

来源:动视网 责编:小OO 时间:2025-10-03 20:11:49
文档

数据结构实验指导书——线性表的操作

实验1线性表的基本操作一、实验目的(1)掌握线性表的逻辑特征;(2)掌握线性表顺序存储结构的特点,熟练掌握顺序表的基本运算;(3)熟练掌握线性表的链式存储结构定义及基本操作;(4)理解循环链表和双链表的特点和基本运算;(5)加深对顺序存储数据结构的理解和链式存储数据结构的理解,逐步培养解决实际问题的编程能力;二、实验内容1、创建有若干个元素(可以是整型数值)的顺序表,实现对顺序表的初始化,对已建立的顺序表插入操作、删除操作、遍历输出顺序表。要求各个操作均以函数的形式实现,在主函数中调用各个函数
推荐度:
导读实验1线性表的基本操作一、实验目的(1)掌握线性表的逻辑特征;(2)掌握线性表顺序存储结构的特点,熟练掌握顺序表的基本运算;(3)熟练掌握线性表的链式存储结构定义及基本操作;(4)理解循环链表和双链表的特点和基本运算;(5)加深对顺序存储数据结构的理解和链式存储数据结构的理解,逐步培养解决实际问题的编程能力;二、实验内容1、创建有若干个元素(可以是整型数值)的顺序表,实现对顺序表的初始化,对已建立的顺序表插入操作、删除操作、遍历输出顺序表。要求各个操作均以函数的形式实现,在主函数中调用各个函数
实验1  线性表的基本操作

一、实验目的

(1) 掌握线性表的逻辑特征;

(2) 掌握线性表顺序存储结构的特点,熟练掌握顺序表的基本运算;

(3) 熟练掌握线性表的链式存储结构定义及基本操作;

(4) 理解循环链表和双链表的特点和基本运算;

(5 )加深对顺序存储数据结构的理解和链式存储数据结构的理解,逐步培养解决实际问题的编程能力;

二、实验内容

1、创建有若干个元素(可以是整型数值)的顺序表,实现对顺序表的初始化,对已建立的顺序表插入操作、删除操作、遍历输出顺序表。

     要求各个操作均以函数的形式实现,在主函数中调用各个函数实现以下操作:

    (1)从键盘上依次输入21、18、30、75、42、56,创建顺序表,并输出顺序表中的各元素值。

    (2)分别在单链表的第3个位置插入67,给出插入成功或失败的信息,并输出此时顺序表中的各元素值。

    (3)删除顺序表中的第6个数据元素,给出删除成功或失败的信息,并输出此时顺序表中的各元素值。

    (4)查找顺序表中是否有75这个元素,如果有返回该元素在顺序表中的位序。

2、创建有若干个元素(可以是整型数值)的单链表,实现对单链表的初始化,对已建立的顺序表插入操作、删除操作、查找操作、遍历输出单链表表。

    要求各个操作均以函数的形式实现,在主函数中调用各个函数实现以下操作:

   (1)从键盘上依次输入21、18、30、75、42、56,创建单链表,并输出单链表中的各元素值。

   (2)分别在单链表的第4个位置,给出插入成功或失败的信息,并输出单链表中的各元素值。

   (3)删除单链表中的第2个数据元素,给出删除成功或失败的信息,并输出单链表中的各元素值。

   (4)查找顺序表中的第五个元素并输出该元素的值。

三、参考代码

(1) 顺序表的操作

#include

#include

#define TRUE  1

#define FALSE  0

#define OK 1

#define ERROR 0

#define OVERFLOW -2

typedef int Status;

#define INIT_SIZE 100 

  /*初始分配空间的大小*/

/*分配增量*/

typedef int ElemType;

typedef struct{

 int listsize;

}SqList;

/*ElemType elem[INIT_SIZE],注两者区别。存储空间的起始地址。*/

/*线性表中数据元素个数,即表长*/

/*线性表所申请的存储空间的大小*/

SqList CreateList_Sq(SqList L)

/*创建一个空的线性表*/

{

    if (!L.elem)    exit(ERROR);

    L.length=0;   /*表长为0*/

    L.listsize=INIT_SIZE;   

 /*申请的空间为初始大小*/

    return   L;

}

  Status InsertList_Sq(SqList *L, int i, ElemType e)

/*在线性表的第i个位置前插入元素e*/

{  int * newbase,*q,*p;

 值不合法!\\n");exit(ERROR);}

 当前空间已满,增加分配空间*/

}

SqList  DeleteList_Sq(SqList *L, int i, ElemType *e)

/* 删除线性表中的第i个元素,并获得所删元素的值*/

 值不合法!\\n");exit(ERROR);}

}

void Print_Sq(SqList L)

/*遍历顺序线性表*/

}

int GetLength(SqList L)

{

}

int equal(ElemType e1,ElemType e2)

/*判两个元素是否相等*/

{

}

int LocateElem_Sq(SqList L,ElemType e, int (* compare)(ElemType e1,ElemType e2))

}

void Getelem(SqList L,int i,ElemType *e)

{

}

int ListEmpty(SqList L)

{

  if (L.length==0) return 1;

else return 0;

}

{  int i;

}

(2)单链表的操作

  

  

/*定义结点类型*/

typedef struct  Node

    ElemType data;            /*单链表中的数据域 */

    struct Node *next;         /*单链表的指针域*/

}Node,*LinkedList;

  

  

/*单链表的初始化*/

  

    Node *L;   

    L = (Node *)malloc(sizeof(Node));   /*申请结点空间*/

    if(L == NULL)                       /*判断是否有足够的内存空间*/

 申请内存空间失败

 将next设置为NULL,初始长度为0的单链表*/

return L;

  

  

  

  

/*单链表的建立2,尾插法建立单链表*/

  

 int x;

 

    L = (Node *)malloc(sizeof(Node));   /*申请头结点空间  */

 初始化一个空链表  */

    r = L;                          /*r始终指向终端结点,开始时指向头结点*/

    {   

        Node *p;   

        p = (Node *)malloc(sizeof(Node));   /*申请新的结点 */

 结点数据域赋值 */

 将结点插入到表头L-->|1|-->|2|-->NULL */

        r = p;    

    }   

    return L;      

  

  

/*单链表的插入,在链表的第i个位置插入x的元素*/

  

    int tempi;                     /*pre为前驱结点*/

    pre = L;   

 查找第i个位置的前驱结点*/

 插入的结点为p*/

    p = (Node *)malloc(sizeof(Node));   

    return L;                              

  

  

/*单链表的删除,在链表中删除值为x的元素*/

  

    Node *p,*pre;                   /* pre为前驱结点,p为查找的结点*/

 查找值为x的元素

    {      

        pre = p;    

    }   

 删除操作,将其前驱next指向其后继。*/

    free(p);   

    return L;   

  

int GetElem_L(LinkedList L, int i, ElemType e) {

 /*L是带头结点的链表的头指针,以 e 返回第 i 个元素 */

 指向第一个结点,j为计数器 */

 顺指针向后查找,直到 p 指向第 i 个元素  */

 或 p 为空(P=最后一个元素内的指针域值)*/

    return 0;     /* 第 i 个元素不存在

 取得第 i 个元素

}

  

    LinkedList list,start;   

    list = LinkedListCreatT();   

    printf("\\n");   

  

    LinkedListInsert(list,i,x);   

    printf("\\n");   

    LinkedListDelete(list,x);    

    printf("\\n");   

}  

文档

数据结构实验指导书——线性表的操作

实验1线性表的基本操作一、实验目的(1)掌握线性表的逻辑特征;(2)掌握线性表顺序存储结构的特点,熟练掌握顺序表的基本运算;(3)熟练掌握线性表的链式存储结构定义及基本操作;(4)理解循环链表和双链表的特点和基本运算;(5)加深对顺序存储数据结构的理解和链式存储数据结构的理解,逐步培养解决实际问题的编程能力;二、实验内容1、创建有若干个元素(可以是整型数值)的顺序表,实现对顺序表的初始化,对已建立的顺序表插入操作、删除操作、遍历输出顺序表。要求各个操作均以函数的形式实现,在主函数中调用各个函数
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top