2024王道数据结构课后习题代码

2024王道数据结构课后习题代码
文章目录第二章、线性表 2.2综合题 朋友们 , 我来更新了 , 有没有想我2.2单链表未完待续... 2023年五月末之前将更新完本书所有习题
前言 这篇文章中的题都是2024年王道考研数据结构中的题 , 2.2.1即为第2.2课的课后第一题 。我是代码小白 , 希望可以和各位大佬交流学习!第二章、线性表 2.1课程里的顺序表初始化 , 动/静态分配内存 2.1.1 顺序表初始化(静态)
#include #define MaxSize 100struct Sqlist {int data[MaxSize];int length = 0;};void InitList(Sqlist &l){for (int i = 0;i < MaxSize;i++){l.data[i] = 0;}l.length = 0;}int main(){Sqlist L;InitList(L);for (int i = 0;i < MaxSize;i++){printf("第%d个数据元素是:%d\n", i+1, L.data[i]);}return 0;}
2.1.2 顺序表初始化(动态)
#include#include#define InitSize 10typedef struct {int *data;int MaxSize;int length;}SqList;void InitList(SqList &l) {l.data = http://www.kingceram.com/post/(int*)malloc(InitSize * sizeof(int));l.MaxSize = InitSize;l.length = 0;}voidIncreaseSize(SqList& l, int morespace){int* p = l.data;l.data = (int*)malloc((InitSize + morespace) * sizeof(int));for (int i = 0;i < InitSize;i++){l.data[i] = p[i];}l.MaxSize = InitSize + morespace;free(p);}int main(){SqList L;InitList(L);IncreaseSize(L,5);for (int i = 0;i < L.MaxSize;i++){printf("第%d个数据元素是:%d\n", i + 1, L.data[i]);S}return 0;}
2.1.3 顺序表上插入和删除
#include #include#define maxsize 20struct SqList{int data[maxsize];int length=0;};void InitList(SqList &l){for(int i=0;i
2.2综合题
这些题是王道教材的p18-p19的1-14题 , 2.2.1即为综合题第一题
2.2.1 顺序表删最小值
从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值 。空出的位置由最后一个元素填补 , 若顺序表为空 , 则显示出错信息并退出运行 。
bool test1(SqList &l){if(l.length==0)return false;print(l);int value=http://www.kingceram.com/post/l.data[0],pos=0;//设置擂主的值和位置for(int i=1;i
2.2.2 顺序表O(1)逆序
02.设计一个高效算法 , 将顺序表L的所有元素逆置 , 要求算法的空间复杂度为O(1) 。
void test2(SqList &l){print(l);int temp=0;//交换对称位置的数for(int i=0;i<=(l.length-1)/2;i++)//需要小于等于 ? 如果< , 中间两个换不过来 {temp=l.data[i];l.data[i]=l.data[l.length-1-i];l.data[l.length-1-i]=temp;} print(l);}
2.2.3 顺序表删特定值
03.对长度为n的顺序表L , 编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法 , 该算法删除线性表中所有值为x的数据元素 。
void test3(SqList &l,int key){printf("进入test3!\n");int mark=0;//标记几处有key值 for(int i=0;i