= =数据结构 》不定期更

来源:互联网 发布:java对象转json字符串 编辑:程序博客网 时间:2024/05/27 20:53

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

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

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

#include<stdio.h>#include<malloc.h>#include<stdlib.h>#define Maxsize 100#define ElemType inttypedef 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 chartypedef 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);}

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


原创粉丝点击