
C数据结构严蔚敏版,包含全注释源码,涵盖线性表、队列、栈、监视哨、查找、折半插入排序、冒泡排序、快速选择等内容。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
数据结构及算法C语言版,严蔚敏著。此版本在VC6环境下运行通过,包含源代码(CPP文件),涵盖了顺序线性表、单链表的插入、删除和查找等操作。此外,还包括监视哨查找、折半查找、直接插入排序、希尔排序、冒泡排序、快速排序和选择排序等经典算法。该资源提供了大量的注释,详细解释了VC6的语法特性以及各种算法的实现与理解。为了更直观地展示其功能,提供了EXE演示版本(可在 上机第一次 栈应用,转换进制题目。//请务必将每个cpp文件视为独立的项目,避免将多个cpp文件合并到同一个项目中,因为我为每个cpp文件都定义了main函数。//该教材并未提供这些功能,需要自行补充实现。typedef int SElemType;//p46书上的。#define STACK_INIT_SIZE 100 //定义初始分配的内存大小#define STACKINCREMENT 10 //每次申请内存不足时扩展的大小typedef struct{ SElemType *base; //栈底指针,构造之前为NULL SElemType *top; //栈顶指针 int stacksize; //当前已分配的存储空间,以元素数量计算}SqStack; //定义顺序栈别名。//构造一个空栈SStatus InitStack(SqStack &S){ //参考List.cpp中malloc的解释 S.base=(SElemType *) malloc(STACK_INIT_SIZE * sizeof (SElemType)); if (!S.base) exit(OVERFLOW); //存储分配失败 S.top = S.base; //初始时栈顶等于栈底 S.stacksize = STACK_INIT_SIZE; //初始栈容量 return OK;} //end of InitStack//插入元素e为新的栈顶元素Status Push(SqStack &S, SElemType e){ if (S.top - S.base >= S.stacksize) //如果栈满,则扩展存储空间 { S.base = (SElemType *) realloc(S.base, (S.stacksize + STACKINCREMENT) * sizeof (SElemType)); if (!S.base) exit(OVERFLOW); //存储分配失败 //调整栈顶位置 S.top = S.base + S.stacksize; //修改栈大小为新的大小 S.stacksize += STACKINCREMENT; } //*符号表示求值符 *S.top++ = e; //将e压入栈顶,然后将S.top指向下一个可用位置返回 OK;} //end of Push//若栈不空,则弹出S的栈顶元素,并将其值赋给e并返回OK;否则返回ERRORStatus Pop(SqStack &S, SElemType &e){ if (S.top == S.base) //如果栈顶等于栈底,表示空栈,则报错 return ERROR; e = *--S.top; //先减1指向当前栈顶元素,再取值赋给e return OK;}//书上没有这部分内容,自行添加用于处理每个元素的dataStatus PrintEach(SElemType e){ cout<
全部评论 (0)


