= =数据结构 》不定期更

先说明我真的不喜欢之前的学习方式 很赶 而且一无所成 之前的目的是为了考试拿成绩 一直狂刷题 (虽然并没有一直把 嘻嘻嘻) 现在发现我连最基本的都没有搞懂 我怎么去看题啊 根本没有头绪的好吧 即便是搜到了别人的代码 看起来也是很吃力的 效果很慢的 所以我决定 数据结构这个模块 争取把最基本的框架给搞懂= =

还有就是在初始化结构体的时候尽量用指针 因为调用函数,如果不用指针的话,有可能在调用的过程中改变的是形参,等调用结束释放之后,实参是没有变化的,这是我今天下午的一点小的理解,今天下午敲了动态顺序表的构建和插入一个元素并读取出来。

还有如果初始化定义的内存用完了,再重新分配的话,malloc和realloc的写法区别还是不太懂,咦我真菜。最后我再表白五月天嘻嘻嘻。

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define Maxsize 100
#define ElemType int
typedef struct{
	int lengh;
	ElemType *elem;
	int listsize;
}Sqlist;
void initSqlist(Sqlist *L){
	L->elem=(int*)malloc(Maxsize*sizeof(ElemType));
	if(!L->elem)
	    exit (0);
	L->lengh=0;
	L->listsize=Maxsize;
}
void insertSqlist(Sqlist L,int i,ElemType item){
	ElemType *base;
	if(i<1||i>L.lengh+1)
	    exit (0);
	if(L.lengh>=L.listsize)
	{
		base=(ElemType *)realloc(L.elem,(L.listsize+Maxsize)*sizeof(ElemType));
		L.elem=base;
		L.listsize+=100;
	}
	for(int n=L.lengh-1;n>=i-1;n--)
	{
		L.elem[n+1]=L.elem[n];
	}
	L.elem[i-1]=item;
}
int main()
{
	Sqlist L;
	int n;
	ElemType item;
	initSqlist(&L);
	printf("%d\n",L.lengh);
	L.lengh=10;
	for(int i=0;i<L.lengh;i++)
	{
		scanf("%d",&L.elem[i]);
	}
	printf("you want to insert number and address:");
	scanf("%d %d",&item,&n);
	insertSqlist(L,n,item);
	for(int i=0;i<L.lengh+1;i++)
	{
		printf("%d ",L.elem[i]);
	}
	printf("\n");
	return 0;
}

后序遍历一颗二叉树= =

/*二叉树的基本构建*/
#include<stdio.h>
#include<stdlib.h>
#define ElemType char
typedef struct BiTNode{
	ElemType data;
	struct BiTNode *lchild,*rchild; 
}BiTNode,*BiTree;
void CreateBiTree(BiTree *T){
	char c;
	scanf("%c",&c);
	if(c==' ')
	    *T = NULL;
	else
	{
		*T=(BiTNode *)malloc(sizeof(BiTNode));
		(*T)->data=c;
		CreateBiTree(&((*T)->lchild));
    	CreateBiTree(&((*T)->rchild));
	}
	
}
visit(char c)
{
	printf("%c",c);
}
PosOrderTraverse(BiTree T){
	if(T){
		PosOrderTraverse(T->lchild);
		PosOrderTraverse(T->rchild);
		visit(T->data);
	}
}
int main()
{
	BiTree T;
	CreateBiTree(&T);
	PosOrderTraverse(T);
}

(我现在的唯一的想法是怎么样让我潜下心来学习 很累 可是也明知道不能选择安逸)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值