zoukankan      html  css  js  c++  java
  • 1.2顺序表

    计算机内部存储一张线性表(线性结构的数表),最简单方便的方法就是用一组连续地址的内存单元来存储整张线性表。

    顺序表的特征:

      1)有一个唯一的表名来标识该顺序表;

      2)内存单元连续存储,也就是说,一张顺序表要占据一块连续的内存空间;

      3)数据顺序存放,元素之间有先后关系

    注意:数组本身就是一张顺序表。

    顺序表的定义:

    两种定义顺序表的方法:静态定义一张顺序表;动态生成一张顺序表。

    静态地定义一张顺序表的方法与定义一个数组的方法类似。

    向顺序表中插入、删除元素、

    ————————————————————————————————————————

    ________________________________________________________

    实例:

    创建一个静态的顺序表存放整数,大小为10,完成以下操作:

    1)输入6个整数,打印出顺序表的内容,并显示剩余空间;

    2)在第三个位置插入元素0,打印出顺序表内容,并显示剩余空间个数;

    3)再试图向表中第11个位置插入元素0

    4)删除表中第六个元素,打印出表中内容,并显示剩余空间个数;

    #include<stdlib.h>
    #include<stdio.h>
    #define MaxSize 10
    //静态顺序表的各种操作
     
    void insertElem(int Sqlist[],int *len,int i,int x)	//向顺序表中插入元素。Sqlist表示首地址,*len表长度,i插入位置,x待插入位置 
    {
    	int t;
    	if(*len==MaxSize || i<1 || i>*len+1)		//非法插入 
    	{
    		printf("this insert is illegal
    ");
    		return;
    	}
    	for(t=*len-1;t>=i-1;t--)	//插入元素 
    		Sqlist[t+1]=Sqlist[t];
    	Sqlist[i-1]=x;
    	*len=*len+1; 	//表长加1 
    }
    
    void DelElem(int Sqlist[],int *len,int i)	//向顺序表删除元素,Sqlist表首地址,*len表长,i删除元素位置 
    {
    	int j;
    	if(i<1 || i>*len)
    	{
    		printf("this insert is illegal");
    		return;
    	}
    	for(j=i;j<=*len-1;j++)
    		Sqlist[j-1]=Sqlist[j];
    	*len=*len-1;
    }
    
    int main()
    {
    	int Sqlist[MaxSize];
    	int len,i;
    	printf("input 6 integer numbers
    ");
    	
    	for(i=0;i<6;i++)
    	scanf("%d",&Sqlist[i]);
    	len=6;
    	for(i=0;i<len;i++)
    		printf("%d ",Sqlist[i]);
    	printf("
    the spare length is %d
    ",MaxSize - len);
    	
    	insertElem(Sqlist,&len,3,0);
    		for(i=0;i<len;i++)
    		printf("%d ",Sqlist[i]);
    	printf("
    the spare length is %d
    ",MaxSize - len);
    	
    	insertElem(Sqlist,&len,11,0);
    	DelElem(Sqlist,&len,6);
    	for(i=0;i<len;i++)
    		printf("%d ",Sqlist[i]);
    	printf("
    the spare length is %d
    ",MaxSize - len);
    	
    	return 0;
    }
    

      

    动态创建一个顺序表。

    #include<stdio.h>
    #include<conio.h> 
    #define MaxSize 10
    //动态顺序表的各种操作
     typedef int ElemType;
     typedef struct{
         int *elem;
         int length;
         int listsize;
     }Sqlist;
     
    void initSqlist(Sqlist *L)    
    {
        L->elem=(int *)malloc(MaxSize*sizeof(ElemType));
        if(!L->elem)    exit(0);
        L->length=0;
        L->listsize= MaxSize;
    }
    
    void InsertElem(Sqlist *L,int i,ElemType item)
    {
    //……
    }

    void DelElem(Sqlist *L,int i)
    {
    //……
    }
    拥抱明天! 不给自己做枷锁去限制自己。 别让时代的悲哀,成为你人生的悲哀。
  • 相关阅读:
    434. Number of Segments in a String 字符串中的单词个数
    C 递归
    Linux vi/vim
    CSS outline-style 属性
    Object.getPrototypeOf (Object) – JavaScript 中文开发手册
    Java 多线程编程
    HTML canvas strokeText() 方法
    HTML DOM Input Text readOnly 属性
    AngularJS ng-open 指令
    filecmp (File & Directory Access) – Python 中文开发手册
  • 原文地址:https://www.cnblogs.com/dd2hm/p/6838644.html
Copyright © 2011-2022 走看看