顺序表的插入与删除

/*顺序表的插入和删除*/
#include<stdio.h>
#include<stdlib.h>
#define Max 20
/*用typedef声明新类型名sequencelist,代表一个结构体类型,可用新类型名去定义变量
 * 命名一个新的类型名sequencelist来代表结构体类型*/
typedef struct {
	int a[Max];//线性表占用的数组最大空间
	int last;//记录线性表最后一个元素的位置
}sequencelist;
int insert(sequencelist *Q, int i, int p)/*将Q定义成指向sequencelist类型的指针变量,在顺序表Q中的第i个元素之前插入p,i~【1,last+2】*/
{
	int k;
	if ((i < 1) || (i > Q->last + 2))
	{
		printf("error!");
		return 0;
	}
	if (Q->last >= Max - 1)
	{
		printf("max to no insert");
		return 0;
	}
	for (k = Q->last; k >= i - 1; k--)
		Q->a[k + 1] = Q->a[k];
	Q->a[i - 1] = p;
	Q->last++;
	printf("insert success!");
	return 1;
}
int del(sequencelist *Q,int i)
{
	int k;
	if((i<1)||(i>Q->last-1))
		printf("error!");
	else{
		for (k=i;k<=Q->last;k++)
		{
		Q->a[k-1]=Q->a[k];
		}
	}
		Q->last--;
		printf("delete to success!");
		return 1;
}

void print(sequencelist *Q){
	 int i;
			for (i = 0; i <10; i++)
			{
				printf("%3d", Q->a[i]);
			}
			printf("\n");
}
int main(void){
	    int i;
		sequencelist *Q;//定义指向结构体类型sequencelist的指针Q
		Q = (sequencelist*)malloc(sizeof(sequencelist*)*100);//开辟sizeof(sequencelist*)*100字节的临时分配域,函数值为其第一个字节的地址,并赋值给指针变量Q
		Q->last = -1;//空表表长置为-1
        printf("insert and delete to sequencelist:");
					for (i = 0; i <10; i++)
					{
						Q->a[i] = i;
						Q->last++;
						printf("%2d", Q->a[i]);
					}
					 printf("\n");
					printf("Q->last:%d",(*Q).last);
        printf("\n");
        insert(Q, Q->last / 3, 12);
        print(Q);
        del(Q,5);
        print(Q);

return 0;
}

调试结果

insert and delete to sequencelist: 0 1 2 3 4 5 6 7 8 9
Q->last:9
insert success!  0  1 12  2  3  4  5  6  7  8
delete to success!  0  1 12  2  4  5  6  7  8  9

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值