数据结构实验之线性表的操作

154 阅读3分钟

  作者简介:大家好我是小唐同学(๑>؂<๑),为梦想而奋斗的小唐,让我们一起加油!!!

个人主页: 小唐同学(๑>؂<๑)的博客主页

系列专栏:数据结构

博友们如果也是新手入门数据结构我希望大家可以多加练习 数据结构题库在牛客网就有已经给大家附上链接,可以直接点击跳转:刷题点这里

牛客网支持ACM模式哦,刷算法题也很推荐哦!!!

下面上文章------》

 

目录

 实验需求

(1)实验任务

(2)输入的形式和输出值的范围

(3)程序需达到的功能

(4)问题描述

代码实现


实验需求

(1)实验任务

1.熟悉C语言的上机环境,掌握C语言的基本结构。 2.会定义线性表的顺序存储结构。 3.熟悉对顺序表的一些基本操作和具体的函数定义。

(2)输入的形式和输出值的范围

        输入数字,以一串整数输入,以?为结尾; 输出线性表的内容和长度。

(3)程序需达到的功能

线性表的创建、插入指定的值及位置、删除指定元素、查找指定元素、查找指定序位的值、查询线性表的长度、打印线性表、清空线性表。 (4)正确的输入:54321

正确的输出结果:你建立的I贿表为:5->4->3->2->1

(4)问题描述

 当我们要在线性表的顺序存储结构上的第i个位置上插入一个元素时,必须先将线性表中第i个元素之后的所有元素依次后移一个位置,以便腾空一个位置,再把新元素插入到该位置。反之,欲删除第i个元素时,也必须把第i个元素之后的所有元素前移一个位置。

代码实现

#include <stdio.h>
#include <stdlib.h>
 # define  MaxSize    100
typedef  struct {
      int *elem;                                   //指向数据元素的基地址
      int  length;                                              //线性表的当前长度                                                   
 } SqList;  
 
 int InitList_Sq(SqList  * L)
 {
    L->elem=(int*)malloc(4*100);
      if(!L->elem) exit(-1);
      L->length=0;	            	                       //空表长度为0
      return 1;
 }
 int CreateList_Sq(SqList *  L,int n)
{
	
	 //int c;
    for(int i=0;i<n;i++){
       // scanf("%d",&c);
        //L.elem[i]=c;
        scanf("%d",&L->elem[i]);
		L->length++;
    }
return 0;
}
int  ListInsert_Sq(SqList * L , int n, int e)
{
  
    int i;
    for(i=L->length-1;i>=n;i--)
    {
        L->elem[i+1]=L->elem[i];
    }
    L->elem[i]=e;
 ++L->length;  
return 0;
}
 void TraverseList_Sq(SqList * L)
{

 
    for(int k=0;k<=L->length-1;k++){
        if(k==0){
            printf("%d",L->elem[k]);
        }
        if(k!=0){
        printf(",%d",L->elem[k]);
        }
    }
}
 void DestroyList_Sq(SqList * L )
{
  if (L->elem)
  free (L->elem) ;    //释放存储空间*/
 /*for (int i=0;i<n;i++)
  {
     free (L.elem); 
  }*/
  
}
 int  main()
 {
     SqList L;
     int n,i,e;
 
 //scanf("%d%d%d",&n,&i&e);
 scanf("%d",&n);
 InitList_Sq(&L);
 CreateList_Sq(&L,n);
TraverseList_Sq(&L); 
printf("\n"); 
scanf("%d",&i);
 scanf("%d",&e);
 ListInsert_Sq (&L,i,e);
 TraverseList_Sq(&L);
 DestroyList_Sq(&L );
 return 0 ;
}