⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqlist.h

📁 一些数据结构的基本实验的解法,和实用哦,欢迎借鉴,交流
💻 H
字号:
#include<iostream.h>
	const ok=1;
	const error=0;
	const overlow=0;
	const underlow=0;
	const maxsize=50;
	const LIST_INIT_SIZE=50;
	const LISTINCREMENT=10;

	typedef struct
	{  int *elem;
	   int length;
	   int listsize;
	   int incrementsize;
    }sqlist;



	void InitList_sq(sqlist &L,int maxsize=LIST_INIT_SIZE,int incresize=LISTINCREMENT) 
	//按需动态分配一个存储区域,设其当前长度为0;初始化操作
	{	L.elem=new int [maxsize];
        L.length=0;
        L.listsize=maxsize;
        L.incrementsize=incresize;
     }//InitList_Sq

    void creat_sqlist(sqlist &L)    //创建线形表
		{ int i=1, x,j;
			cout<<"请输入线形表的元素的个数:"<<endl;
			cin>>j;
		    L.elem=new int [j];
			cout<<"请输入线形表的元素:"<<endl;
			for(i=1;i<=j;i++)
				{	cin>>x;
			      L.elem[i]=x;}
					L.length=j;
			
   }

	 

	
    int listlength_sq(sqlist L)   //求长度
	{	return L.length;}
	

    int getelem_sq(sqlist L,int i,int e)  //取元素
	{  if (i<1 || i>L.length)  return error;
	   else
		{e=L.elem[i];return  e;}
	}

    int require_qianji(sqlist L,int i)   //求前继
	 {           
		if ( i==1)  
			return error;
		else 
			return L.elem[i-1];
	} // LocateElem_Sq 
			 

	int require_houji(sqlist L,int i)   //求后继
		{           
			if ( i==L.length) 
				return error;
			 if (i>=1 && i< L.length)  
		 	   return L.elem[i+1];
		} // LocateElem_Sq 
  



	int LocateElem_sq( sqlist L, int e)    //查找
	{ int i=1,*p;              // i 的初值为第1个元素的位序 
	  p=&L.elem[1];   // p 的初值为第1个元素的存储位置 
	  while (i <= L.length && *p++ != e ) ++i; 
		 if (i <= L.length) return i; 
			else cout<<"线形表中无此数"<<endl;
		}// LocateElem_Sq 




	int  Listinsert_sq(sqlist &L,int i,int e)   //插入

	   {  
	     if(i<1 || i>L.length+1) return error; 
		 if(L.length>=maxsize) return overlow; 
  	     for (int j =L.length-1;j>i;--j)
   	     L.elem[j+1]=L.elem[j]; //元素右移
	     L.elem[i-1]=e;   //插入元素
	     ++L.length;//表长加1
	     return ok;
		}


   int Listdelete_sq(sqlist &L,int i)       //删除
		{
           if(i<1||i>L.length)  return error;
			if (L.length==0)  return underlow; // 表空
			for (int j=i;j<L.length; ++j)        
  				//被删除元素之后的元素前移
		 	L.elem[j-1]=L.elem[j]; 
			--L.length;   //表长减1
		    return ok; 
   }

		 
		 
	 void  listkong_sq(sqlist L)    //判定空表
		 {  if(L.length==0)
		     cout<<"此表为空";
			 else
			 cout<<"此表非空";}


	 void destroylist_sq(sqlist &L)   //表置空
		{   delete[]L.elem;
		    L.listsize=0;
		    L.length=0;
		}

		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -