码迷,mamicode.com
首页 > 其他好文 > 详细

【数据结构考研】

时间:2020-06-18 22:04:45      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:考研   指针   建立   经验   初始   工程   专业   经验分享   size   

声明:本人为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
}

【数据结构考研】

标签:考研   指针   建立   经验   初始   工程   专业   经验分享   size   

原文地址:https://www.cnblogs.com/wangjiaolong/p/13159631.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!