c++链表插入一个数据和删除指定位置数据、查询指定数据位置


```cpp
#include 
#include
#include
#define MAXLEN 100
struct SeqList{
int data[MAXLEN];
int last;
};
/*初始化*/
void InitSeqList(SeqList *list)
{
	
    list->last=-1;
   
}

//在第i个位置上插入数据key
int InsertSeqList(SeqList *list,int i,int key)
{	
	int k;
	if(list->last==MAXLEN-1){/*表空间已满,不能插入*/
		cout<<" 表满 "<<endl;return 0;
	}
	if( i<0 || i>list->last+1 ){/*检查插入位置的合法性*/
		cout<<" 位置不合法 "<<endl;return 0;
	}
	/*将位置i~last上的元素向后移动*/
	for(k=list->last;k>=i;k--)
		list->data[k+1]=list->data[k];
	list->data[i]=key;  /*新元素插入*/
	list->last++;  /*last仍指向最后元素*/
	return 1;
	
	
}

//删除指定位置i上的数据
int DeleteSeqList(SeqList *list,int i)
{
	int k,a;
	if(list->last==-1){/*表空,不能删除*/
		cout<<" 表空 "<<endl;return 0;
	}
	if(i<0||i>list->last){/*检查删除位置的合法性*/
		cout<<" 位置不合法 "<<endl;return 0;
	}
	/*将位置i+1~ last上的元素向前移动*/
	a=list->last;
	for (k = i+1; list->last >= k ; k++ )
		list->data[k-1] = list->data[k];
	list->last=a-1; /*last仍指向最后元素*/	
	return 1; 
}

/*查找循环*/
int LocateSeqList(SeqList *list, int key)
{ 
	cout<<"查找的数据的位置:"<<endl;
	int i;
	for(i = 0; i<=list->last; i++)
		if(list->data[i]==key)
			cout<<i<<endl;			
	return -1;
}

/*顺序输出表*/
void Display(SeqList *list)
{
	for(int i=0;i<=list->last;i++)
		cout<<list->data[i]<<"   ";
     cout<<endl;
}
void main()
{	int a,b,c,d;
    SeqList list;
    InitSeqList(&list);//空表
	list.data[0]=12;
	list.data[1]=34;
	list.data[2]=17;
	list.data[3]=23;
	list.data[4]=31;
	list.data[5]=10;
	list.last=5;
	cout<<"输入前的数据:"<<endl;
	Display(&list);
	cout<<"请输入要插入的位置和数据:"<<endl;
	cin>>a>>b;
	InsertSeqList(&list,a,b);
	cout<<"输入后的数据:"<<endl;
	Display(&list);
	cout<<"请输入要删除的位置:"<<endl;
	cin>>c;
	DeleteSeqList(&list,c);
	cout<<"删除后的数据:"<<endl;
	Display(&list);
	cout<<"查找的数据:"<<endl;
	cin>>d;
	LocateSeqList(&list,d);
  }

结果
c++链表插入一个数据和删除指定位置数据、查询指定数据位置_第1张图片

你可能感兴趣的:(c++链表插入一个数据和删除指定位置数据、查询指定数据位置)