数据结构-栈的相关理解和C语言基础实现

来源:互联网 发布:手机端怎么找淘宝客服 编辑:程序博客网 时间:2024/05/21 19:30

学到现在,还是对整个数据结构很是混乱的状态。线性表,顺序表,链表,栈,队列,串,都是些什么鬼!!!

上个周末的时候好好思索了下,以及查了下相关资料,稍微有一点理解,不知是对是错,先记录下:
1.数据结构中最基础的是线性表和链表两种结构,两者的区别在于线性表是在内存区分得了一连串的存储空间;而链表分配的是一段不一定连续的存储空间,其相互之间的联系是通过结构中的next指针来说明的。
2.栈,队列,串这三个结构其本质上可能是线性表或链表,不同处在于其方法的不同。
栈的存储是栈顶进,栈顶出,如图
栈的存储结构
而队列的存储是队列尾进,队列首出,如图
队列的存储结构
以上就是目前的粗薄理解。

在前段时间的编程中,已经实现了栈的基本实现,以下是代码:

#include "stdafx.h"#include "malloc.h"#define OK 1#define TURE 1#define ERROR 0#define FALSE 0#define LENGTH 20typedef struct   {    int *base;    int *top;}Stack;                                           //定义带头指针的栈结构int initStack(Stack &S)                           //初始化栈{    S.base=(int *)malloc(LENGTH*sizeof(int));     //初始化LENGTH长度的空间    S.top=S.base;                                 //top指针指向base指针    return OK;}int push(Stack &S,int e)                          //进栈操作{    *(S.top)=e;                                   //将e的元素值赋给top指针指向的位置                       S.top++;                                      //top指针后移    return OK;}int pop(Stack &S)                                 //出栈操作{    int e=*(--S.top);                             //将top指针所指的元素赋给e    return e;                                     //返回e的元素值}int main(){    int i=0;    Stack h;    initStack(h);    for (i=1;i<=10;i++)        push(h,i);    for (i=1;i<=10;i++)        printf("%d  ",pop(h));    return OK;}

以上就是目前的学习心得了,很不标准,如果有同学、前辈看到可以互相指点。

0 0
原创粉丝点击