数据结构初步学习-顺序表

这里写目录标题

数据结构—顺序表的实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 20
typedef struct {
	int  *num;  //假如这里是一个数组 你最好使用指针 来表示它
	int length;
} Node;
//这个有点类似于数组 , 可以自由改变结构体内的数字并传出
int init(Node &n,int size) {
	n.length= size;
	n.num=(int*)malloc(sizeof(int));
	if(!n.num) {
		return false;
	}
	return 1;
}

void create(Node &n) {
	int length, i=0;;
	printf("你输入的顺序表的长度大小是多少:");
	scanf("%d",&length);
	n.length=length;
	printf("请输入你要输入的数字:");
	for(; i<length; i++) {
		scanf("%d",&n.num[i]);
	}
}

void travel(Node &n) {
	int i=0;
	printf("我们遍历的顺序组是:");
	for(; i<n.length; i++) {
		printf("%2d ",n.num[i]);
	}
	printf("\n");
}


void  update(Node &n,int number) { //按数值改变  注意名称是否会重复
	int i=0,m;
	for(; i<n.length; i++) {
		if(n.num[i]==number) {
			printf("输入你要改变的数值:");
			scanf("%d",&m);
			n.num[i]=m;
			break;
		}
	}
}


void Delete(Node &n,int number) {    //不能使用标识符
	int i=0,j,m,ret=0;
	for(; i<n.length; i++) {
		if(n.num[i]==number) {
			m=i;
			ret=1;
			break;
		}
	}
        if(ret)
        {

	for(j=m+1; j<n.length; j++) {
		n.num[j-1]=n.num[j];
	}
	     
	
	n.length--;   //要考虑最后一位的情况 , 但是直接-- 的话就直接把最后一位删除了 
	        }
	        else
	        {
	        	printf("你输入的数字不对,删除失败\n");
	        }
}


int main() {
	Node n1;
	int n,m;
	init(n1,10);
	create(n1);
	travel(n1);
	printf("输入你要修改的数值:");
	scanf("%d",&m);
	update(n1,m);
	travel(n1);
	printf("输入你要删除的数值:");
	scanf("%d",&n);
	Delete(n1,n);
	travel(n1);
	printf("操作结束\n"); 
	return 0;

}

在这里插入图片描述
在这里插入图片描述
这里我简单的实现了一个顺序表,写的很草,没有malloc,可以粗略的看看吧

遇到的问题有
1.Node &n Node n
一开始我写的是Node n , 后来发现这种写法是不行的

```javascript
  printf("%d\n",n1);
   printf("%d",&n1); 

在这里插入图片描述
查看了下地址,我认为这里就是相当于一个读入的地址 一个没有读入地址
发现n1中的传值length无法写入
在这里插入图片描述
2.我开始写了删除函数是写的delete
原来这个是标识符 , 建议大家用规范写法DeleteNode(驼峰)这样的,不要像我一样犯低级错误

3. 删除后的length记得 length–
好处是假如你想删除最后一位就直接删除了

写的很草,就按照自己的感觉写了crud,目前就是初步实现还没有考虑到优化!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值