学到现在,还是对整个数据结构很是混乱的状态。线性表,顺序表,链表,栈,队列,串,都是些什么鬼!!!
上个周末的时候好好思索了下,以及查了下相关资料,稍微有一点理解,不知是对是错,先记录下:
1.数据结构中最基础的是线性表和链表两种结构,两者的区别在于线性表是在内存区分得了一连串的存储空间;而链表分配的是一段不一定连续的存储空间,其相互之间的联系是通过结构中的next指针来说明的。
2.栈,队列,串这三个结构其本质上可能是线性表或链表,不同处在于其方法的不同。
栈的存储是栈顶进,栈顶出,如图
而队列的存储是队列尾进,队列首出,如图
以上就是目前的粗薄理解。
在前段时间的编程中,已经实现了栈的基本实现,以下是代码:
#include "stdafx.h"
#include "malloc.h"
#define OK 1
#define TURE 1
#define ERROR 0
#define FALSE 0
#define LENGTH 20
typedef 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;
}
以上就是目前的学习心得了,很不标准,如果有同学、前辈看到可以互相指点。