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

📄 si.cpp

📁 这是一个关于线性表的数据结构的一系列的算法,
💻 CPP
字号:
#include<iostream.h>
#include<stdio.h>
#include<malloc.h>
#define Init_List_Size  100
#define ListIncrement 10            //不够时,一次能增加的数据元素的数目

#define error 0
#define ok 1
#define overflow -1

typedef int status;
typedef struct  
{
	int *elem;
	int length;
	int listsize;
}Sqlist;

status InitList(Sqlist &L)
{
	L.elem=(int*)malloc(Init_List_Size* sizeof(int));
    if(! L.elem)  return (overflow);
	L.listsize=Init_List_Size;
    L.length=0;
	return ok;
}

status CreatList(Sqlist &L,int n)
{
	int i;
	for(i=0;i<n;i++)
		scanf("%d",&L.elem[i]);
	return ok;
}

status InsertElem(Sqlist &L,int i,int e)
{
	int s=1;
	Sqlist newbase;
	if(i<0 || i>L.length+1)  return error;
	if(L.length>=L.listsize)
		newbase.elem=(int*)realloc(L.elem,(L.listsize+ListIncrement)*sizeof(int));
	if(!newbase.elem)  return (overflow);
	L.elem=newbase.elem;
	L.listsize+=ListIncrement;
	int *p,*q;
	p=&L.elem[i-1];
	for(q=&L.elem[L.length-1];q>=p;q--)
		*(q+1)=*q;
	*p=e;
	L.length++;
	for(i=0;i<L.length;i++)
		s=s*10;
	return s;
}

status DeteleElem(Sqlist &L,int i,int &e)
{
	if(i<0 || i>L.length)  return error;
	int *p,*q;
	p=&L.elem[i-1];
	e=*p;
	q=&L.elem[L.length-1];
	for(p;p<q;p++)
		*p=*(p+1);
	return e;
}

main()
{
	int i,j,a,b,n,c;
	Sqlist L;
	cout<<"初使化一个线性表"<<InitList(L)<<endl;
	cout<<"向线性表中输入数据元素"<<endl;
    cout<<"输入线性表的数据的数目:";
	cin>>a;
    CreatList(L,a);
	
	cout<<"2.添加一个数据元素"<<endl;
	cout<<"3.删除一个数据元素"<<endl;
	cout<<"输入你向选择的项目:";
	cin>>n;
  	if(n==2)
	{
		cout<<"输入你要添加的数据的位置和数据:";
	    cin>>i>>b;
	    cout<<InsertElem(L,i,b);
	}
	if(n==3)
	{
		cout<<"输入你要删除的数据的位置和数据:";
	    cin>>j;
		cout<<DeteleElem(L,i,c);
	}
	
	return ok;
}


		    
      

	



⌨️ 快捷键说明

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