顺序表做的,但不知道错哪儿了,求助大佬!
查看原帖
顺序表做的,但不知道错哪儿了,求助大佬!
800751
acmwriter楼主2023/5/28 22:14
#include<bits/stdc++.h>
using namespace std;
#define MAXSIZE 100
typedef int Status;
typedef struct{
	int *Elem;
	int length;
}Sqlist;
Status push(Sqlist &L){//输入值 
		L.Elem[0]=1;
		++L.length;
}
Status Initlist(Sqlist &L){//创建空序列表 
	L.Elem=new int[MAXSIZE];
	if(!L.Elem) exit(0);
	L.length=0;
	return 1;
}
Status Locateelem(Sqlist L,int e){//查找输入值在顺序表中的位置 
	for(int i=0;i<L.length;i++)
		if(L.Elem[i]==e)return i+1;
		return 0;
} 
Status ListInsert(Sqlist &L,int i,int e){//插入 
	if(i<1||i>L.length+1)return 0;
	if(L.length==MAXSIZE)return 0;
	for(int j=L.length-1;j>=i-1;j--)
		L.Elem[j+1]=L.Elem[j];
		L.Elem[i-1]=e;
		++L.length;
		return 1;
}
Status ListDelete(Sqlist &L,int i){//删除 
	if(i<1||i>L.length)return 0;
	for(int j=i;j<=L.length;j++)
	L.Elem[j-1]=L.Elem[j];
	--L.length;
	return 1;
	}
void put(Sqlist &L){//输出值 
	for(int i=0;i<L.length;i++){
		cout<<L.Elem[i]<<" ";
	}
}
int main(){
	Sqlist La;
	Initlist(La);
	push(La);
	int n,a,t;
	cin>>n;
	for(int i=2;i<=n;i++){
		cin>>a>>t;
		if(t==0)ListInsert(La,Locateelem(La,a),i);
		else ListInsert(La,Locateelem(La,a)+1,i);	
	}
	int m;
	cin>>m;
	for(int i=0;i<m;i++){
		cin>>a;
		if(Locateelem(La,a))ListDelete(La,Locateelem(La,a));
	}
	put(La);
}
2023/5/28 22:14
加载中...