线性结构完成&&一些总结

来源:互联网 发布:印度 网络空间作战部队 编辑:程序博客网 时间:2024/06/10 01:21

这几天的时间里自己看着郝斌的视频学会了线性结构和基本操作

# include <stdio.h># include <stdlib.h># include <malloc.h>typedef struct Node{int data;struct Node * pNext;}NODE,*PNODE;typedef struct Stack{PNODE pTop;PNODE pBottom;}STACK,*PSTACK;void init(PSTACK);void push(PSTACK,int);bool empty(PSTACK);void traverse(PSTACK);int length(PSTACK);void clear(PSTACK);void destory(PSTACK);int main (){PSTACK pS = (PSTACK)malloc(sizeof(STACK));init(pS);push(pS,1);push(pS,2);push(pS,3);push(pS,4);traverse(pS);printf("栈的长度为%d\n",length(pS));clear(pS);traverse(pS);destory(pS);    system("pause");return 0;}void init(PSTACK pS){pS->pBottom = (PNODE)malloc(sizeof(NODE));if(pS->pBottom==NULL){printf("动态分配内存失败!\n");exit(-1);}pS->pTop = pS->pBottom;pS->pBottom->pNext = NULL;}void push(PSTACK pS,int val){PNODE pNew = (PNODE)malloc(sizeof(NODE)); if(pNew == NULL){printf ("动态分配内存失败\n");exit(-1);}pNew->pNext = pS->pTop;pS->pTop = pNew;pS->pTop->data = val;}bool empty(PSTACK pS){if(pS->pBottom == pS->pTop)return true;elsereturn false;}void traverse(PSTACK pS){if(empty(pS)){printf("链表为空");return;}PNODE p;p = pS->pTop;while(p->pNext!=NULL){printf("%d ",p->data);p = p->pNext;}printf("\n");}int length(PSTACK pS){int i=0;PNODE p;p = pS->pTop;while (p != pS->pBottom){p = p->pNext;i++;}return i;}void clear(PSTACK pS){PNODE p;p = pS->pTop;while (p != pS->pBottom){p->data = 0;p = p->pNext;}}void destory(PSTACK pS){PNODE p,q;p = pS->pTop;while (p != pS->pBottom){q = p;p = p->pNext;free(q); }}/*在VC++6.0内的输出结果为4 3 2 1栈的长度为40 0 0 0Press any key to continue2014-6-5 22:59:36by zhao*/

循环队列
# include <stdio.h># include <malloc.h># include <stdlib.h># define LEN 6typedef struct queue{int * pBase;int front;int rear;}QUEUE,*PQUEUE;void init(PQUEUE,int);void en_queue(PQUEUE,int);void traverse_queue(QUEUE *);bool full_queue(QUEUE *);void out_queue(QUEUE *);bool emput_queue(QUEUE *);int main (){/*int len;printf("输入所要构建循环队列长度:");scanf("%d",&len);*/QUEUE Q;init(&Q,LEN);en_queue(&Q,5);en_queue(&Q,6);en_queue(&Q,7);en_queue(&Q,8);en_queue(&Q,8);traverse_queue(&Q);out_queue(&Q);traverse_queue(&Q);return 0;}void init(PQUEUE pQ,int len){pQ->pBase = (int *)malloc(sizeof(int)*len);if(pQ->pBase==NULL){printf("动态构造数组失败");exit(-1);}pQ->front=pQ->rear=0;}void en_queue(PQUEUE pQ,int val){pQ->pBase[pQ->rear] = val;pQ->rear = (pQ->rear+1)%LEN;}void traverse_queue(PQUEUE pQ){if(emput_queue(pQ)){printf("队列为空\n");}else{int move;move = pQ->front;while(move != pQ->rear){printf("%d ",pQ->pBase[move]);move = (move+1)%LEN;}printf("\n");}}bool full_queue(PQUEUE pQ){if(pQ->front == (pQ->rear+1))return true;elsereturn false;}bool emput_queue(PQUEUE pQ){if(pQ->front==pQ->rear)return true;elsereturn false;}void out_queue(PQUEUE pQ){int val;if(emput_queue(pQ)){printf("队列为空\n");}else{val=pQ->pBase[pQ->front];pQ->front = (pQ->front+1)%LEN;printf("你出队的元素为%d\n",val);}}/*在VC++6.0内的输出结果为5 6 7 8 8你出队的元素为56 7 8 8Press any key to continue2014-6-6 20:41:29by zhao*/
汉诺塔

# include <stdio.h>void hanoi(int n,char A,char B,char C){if(1==n){printf("把第%d个从编号为%c的柱子移动到编号为%c的柱子\n",n,A,C);}else{hanoi(n-1,A,C,B);printf("把第%d个圆盘从%c柱子移动到%c柱子\n",n,A,C);hanoi(n-1,B,A,C);}}int main(){int n;printf("输入所要移动的Hanoi塔的个数:");scanf("%d",&n);hanoi(n,'A','B','C');return 0;}/*2014-6-7 21:28:07by zhao*/
每次基本都是感觉自己坚持不下来,没想到画画图,坚持一下就出来了

高考放了三天,想想两年后的自己也会度过这一关,可是自己依旧什么都不会,我是真不会,不像李鹏飞的谦虚,这几天浑浑噩噩的度过假期,作业也不想写了,感觉自己就是个废材,这个样子怎样考上大实验!!!数学烂成这样,李洋都100多分,梁佳丽什么都会,物理什么都不会,问题就出在课堂上,不认真听讲,老是tmd走神,还泛滥,总感觉自己是什么乔布斯,其实自己什么都不是,人家乔布斯好歹是考上了斯坦福,三年真的很短,这一秒,记住这一秒,已经是下一秒了,能过去的痛苦就不是痛苦,过去享受的东西,过去做的事情得到的荣誉,都是过去,不要总在规划,要立即行动,让行动改变未来!!!

很快的三年,很快的一个月,我要上大实验!!!

电脑滚粗,我要用每一分钟来学习

明天我要把数学搞懂,就像那个2001届的来演讲的那个,他都能把数学从70+变成140+,还有什么不可能的,事在人为,明天不要求懂得多少,只求每一分钟,每一秒都在学习

我再也不能被曲宸阳,杨茽堃,欧宇瞧扁了,我要在他们面前创造奇迹,用我的双手!!!



0 0
原创粉丝点击