= =数据结构 》不定期更

时间:2020-12-25 20:04:59

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

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

还有如果初始化定义的内存用完了,再重新分配的话,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);
}