2021-11-14创建一个长度为8的顺序表,要求删除第3个结点值,并输出

先看运行结果: 


代码如下:

#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#define maxSize 8		//数组空间的大小,10个单元可以不放满。 

typedef struct sequenlist{
	int last;          //线性表满的时候,为last为9;代表了数组下标;
	int data[maxSize];
}sequenlist;

//函数声明部分 
void creatlist(sequenlist*L);					//创建顺序表并初始化
int dellist(sequenlist*L,int i);				//删除之前要先创建 
void printOut(sequenlist*L); 					//输出该线性表 

int main(){
	//创建一个长度为8的顺序表,要求删除第3个结点值,并输出
	int i;				//插入位置(或者删除,因为作用域的关系,不同函数中,也可以表示删除等操作)的位置
	int e;              //插入的数据
	sequenlist *L;		//声明指针*L  (指向上面的结构体类型) 
	L=(sequenlist*)malloc(sizeof(sequenlist));//结构体指针在使用前要初始化
	creatlist(L);
//	printf("创建好的线性表如下:\n"); 
//	printOut(L);
	printf("当前数组的最大长度为8\t\t\t请输入你要删除的第几个节点:");
	scanf("%d",&i);
	//删除第 i个节点 
	dellist(L,i); 
	printOut(L);
	getch();
	}

void creatlist(sequenlist*L){	//创建长度为8的顺序表并初始化
	int i=8;				//因为作用域不同,所以可以在这里也用 i 表示数据的个数;
	int j;
	int temp;			//表示插入的数据
	printf("当前线性表的最大长度为8\n");//第几个节点;节点大小=下标大小+1; 
//	scanf("%d",&i);
	for( j=0;j<i;j++){
		printf("data[%d]=",j);
		fflush(stdin);//清除键盘缓冲区; 
		scanf("%d",&temp);
		L->data[j]=temp;
		}
		//别忘了写L-last;
		L->last=j-1;
		printf("\n");
}

void printOut(sequenlist*L){
	int i;
	for(i=0;i<L->last+1;i++){
		printf("data[%d]=%d " ,i,L->data[i]);// data[i],并不代表L-data[i]
		//L->last++;  //会无限循环。
	}
	//L->last++;
}
int dellist(sequenlist*L,int i){
	//删除第i个元素
	//想象长度为8的数组   从第i+1个元素处  依次往前移动,第i个元素就会被覆盖,从而达到删除的目的1;
	int j;
	 printf("被删除后的结果如下:\n");
	 if( i<0 || i>L->last ){
	 printf("你输入的节点位置错误。\n"); 
	}else	for(  ; i<L->last+1; i++)//i代表第几个元素要被删除,L->是下标 
	{
		L->data[i-1]=L->data[i];
	 } 
	 L->last--;
}

	
	

  (本人小白一枚,代码中也许会有不对的地方,请指正。)

猜你喜欢

转载自blog.csdn.net/qq_49612126/article/details/121320478
今日推荐