• 线性表顺序实现方式


             线性表是最基本、最简单的、也是很常用的一种数据结构。线性表中数据元素的关系式一对一的

       关系,即是除了第一个和最后一个数据元素之外,其他数据元素都是首尾相接的。在实际中使用也是

       较为广泛的,接下来用顺序实现方式简单的对其进行一下模拟。

               源代码如下:

    /**
      @author Kiritor
        顺序线性表的演示
    */
    
    #include "stdafx.h"
    #include<stdlib.h>
    #include<conio.h>
    #define LIST_INIT_SIZE 100
    #define LIST_INCREMENT 10
    #include<malloc.h>
    #define OK 1
    #define OVERFLOW 0
    typedef struct 
    {
        int * element;//存储空间的基址
        int length;//当前线性表的长度
        int size ;//线性表的容量
    
    }SqList;
    
    /*初始化线性表*/
    int init_SqList(SqList & l)
    {
         l.element = (int *)malloc(LIST_INIT_SIZE*sizeof(int));//分配地址空间,线性表的总共的容量情况
    	 if(!l.element)
    	 {
    	    exit(OVERFLOW);//分配失败则退出程序
    	 }
    	 l.length=0;
    	 l.size=LIST_INCREMENT;//线性表的初始容量
    	 printf("%s\n","初始化线性表成功!");
    	 return OK;
    }
    /*输出线性表的内容*/
    void print_SqList(SqList &l)
    { 
    	int i=0;
    	printf("%s\n","线性表内容:");
    	for(i=0;i<l.length;i++)
    	{ 
    		printf("%d \n",*(l.element+i));
    	}
    }
    /*插入数据到线性表
     i表示在第i个位置前面进行插入
     i从1开始*/
    int insert_SqList(SqList &l,int i,int element)
    {
    	if(i<1||i>l.length+1)
    		return OVERFLOW;
    	if(l.length>=l.size)
    	{
    		//存储空间已满,重新进行分配
    		int * newbase = (int *)realloc(l.element,(l.size+LIST_INCREMENT)*sizeof(int));
    		l.element = newbase;
    		l.size += LIST_INCREMENT;
    	}
    	//开始进行插入的操作
    	int *q = &(l.element[i-1]);//q为需要插入的位置
    	int *p;
    	for(p=&(l.element[l.length-1]);p>=q;p--)
    	{
    		*(p+1)=*p;
    	}
    	*q  = element;
    	l.length++;
    	printf("%s%d\n","线性表插入",element);
    	return OK;
    		 
    }
    /*删除线性表的某个位置的元素
    i表示要删除的元素的位置从1开始
    element用来存放删除的元素*/
    int delete_SqList(SqList &l,int i,int & element)
    {
    	if(i<1||i>l.length)
    	{
    		return OVERFLOW;
    	}
    	int *p= &(l.element[i-1]);
    	element=*p;//将要删除的元素放入emlement中
    	printf("删除的元素是:%d\n",element);
    	int *q=l.element+l.length-1;
    	for(++p;p<=q;p++)
    	{
    		*(p-1)=*p;//后面的元素往前面移动
    	}
    	l.length--;
    	return OK;
    }
    int main(int argc, _TCHAR* argv[])
    {   SqList l;
        int emlement=0;
    	init_SqList(l);
    	insert_SqList(l,1,123);
    	insert_SqList(l,1,321);
    	insert_SqList(l,2,231);
    	print_SqList(l);
    	delete_SqList(l,2,emlement);
    	print_SqList(l);
    	_getch();
    	
    	return 0;
    }
    

              看一下结果图:

                 

               以上就是线性表的顺序实现方式了,后续会对其链式实现方式及其特点做些总结。Over!

  • 相关阅读:
    PTA 乙级 1041 考试座位号 (15分) C++
    markdown test
    PTA 乙级 1040 有几个PAT (25分) C/C++
    PTA 乙级 1039 到底买不买 (20分) Python
    升级DLL plugin 到AutoDllPlugin
    使用插件适配移动端布局
    关于webpack,你想知道的都在这;
    HTML2Canvas使用总结
    ajax自己封装
    linux 基础知识练习之一---安装与连接
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2999563.html
Copyright © 2020-2023  润新知