数据结构考研
Posted wangjiaolong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构考研相关的知识,希望对你有一定的参考价值。
声明:本人为21界考生,软件工程专业,备考科目:政治、英二、数二、854,正在备考中,所有文字仅为备考过程想记录下来的的经验及一些坑,仅供参考,当然我也希望这会成为一篇高分经验分享。
顺序表的实现
静态分配
//定义结构
#define MAXSIZE 10 //存储空间最大分配量
typedef struct {
ElemType data[MAXSIZE]; //用静态的“数组”存放数据元素
int length; //顺序表的当前长度
}SqList; //顺序表的类型定义(静态分配方式)
动态分配
//建立顺序线性表——动态分配
#include<stdio.h>
#include<stdlib.h> //包含malloc free的头文件
#define InitSize 10 //顺序表的初始长度
typedef struct {
int *data; //指示动态分配数组的指针
int MaxSize; //顺序表的最大容量
int length; //顺序表的当前长度
}SeqList; //顺序表的类型定义(动态分配方式)
//用malloc函数申请一片连续的存储空间
void InitList(SeqList* L) {
L->data = (int*)malloc(InitSize * sizeof(int));
L->length = 0;
L->MaxSize = InitSize;
}
//增加动态数组的长度
void IncreaseSize(SeqList*L, int len) {
int* p = L->data;
L->data = (int*)malloc((L->MaxSize + len) * sizeof(int));
for (int i = 0; i < L->length; i++) {
L->data[i] = p[i]; //将数据复制到新区域
}
L->MaxSize = L->MaxSize + len; //顺序表最大长度增加len
free(p); //释放原来的内存空间
}
基本操作
插入
void ListInsert(SqList* L, int i, ElemType e) {
for (int j = L->length; j >= i; j--) { //将第i个元素及之后的元素后移
L->data[j] = L->data[j - i];
}
L->data[i - 1] = e; //在i的位置放入e
L->length++; //长度加1
}
以上是关于数据结构考研的主要内容,如果未能解决你的问题,请参考以下文章