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

目录

 实验需求

(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 ;
}

猜你喜欢

转载自blog.csdn.net/m0_61469860/article/details/125322065