数据结构—顺序表的插入

来源:互联网 发布:安全加密软件 编辑:程序博客网 时间:2024/05/17 06:37

数据结构第一篇-顺序表


  刚开始复习数据结构,感觉还是蛮吃力的,基础不是很好有太多不明白的点了,还好有个耐心极棒的蓝朋友(献花),虽然现在还不是很明白,但是我相信继续学习下去一定会拨开乌云的。

知识点:malloc函数原型:extern void* malloc(unsigned int num_bytes)

realloc函数原型:extern void* realloc(void* mem_address,unsigned int newsize),void*mem_address表示要改变内存大小的指针名,即要改变的是哪个指针指向的内存,unsigned int newsize是指要分配的新的大小(要大于原来的大小)


#define  _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#define LISTINCREASE 10#define N 5typedef struct{int* BASE; //需要一段空间int LISTSIZE; //知道分配了多少空间*4int LENGTH; //顺序表里的元素个数//以上三个元素都是要你自己时刻维护的。} LIST;void INIT_LIST(LIST* list){list->LISTSIZE = 200;list->BASE = (int*)malloc(sizeof(int) * list->LISTSIZE);list->LENGTH = 0;}/*******void CREAT(LIST *list, int a[], int n){int i;for (i = 0; i < n; i++) list->BASE[i] = a[i];list->LENGTH = n;}************/void LISTINSERT(LIST* list, int i, int e){int index;      //最后一个元素的下标,注意数组中下标与位置的关系if (i < 1 || i>list->LENGTH + 1)return;if (list->LENGTH > list->LISTSIZE){list->BASE = (int *)realloc(list->BASE, (list->LISTSIZE + LISTINCREASE)*sizeof(int));if (!list->BASE)return;list->LISTSIZE = list->LISTSIZE + LISTINCREASE;}for (index = list->LENGTH-1; index >= i - 1; index--){list->BASE[index+1] = list->BASE[index];}list->BASE[i-1] = e;list->LENGTH++;}/******void PRINT(LIST* list){int i;for (i = 0; i < list->LENGTH; i++) printf("%d ", list->BASE[i]);printf("\n");}************/int main(){LIST mylist;//mylist = NULL;这部分注释是因为之前将LIST mylist用LIST*mylist形式,这种形式也可以不过要加上下面那句注          释掉的才可以,自己要仔细琢磨一下,刚入门指针那块比较模糊。//mylist = (LIST*)malloc(sizeof(LIST));INIT_LIST(&mylist);for (int i = 0; i < N; i++){scanf("%d", &mylist.BASE[i]);mylist.LENGTH++;     //这一句我刚开始没有加导致结果出错,因为LENGTH初始化为0,输入一个数后也要    将维护的LENGTH相应的加1}//CREAT(&mylist, a, 5);也可以用函数来实现输入输出LISTINSERT(&mylist, 3, 66);//PRINT(&mylist);for (int i = 0; i < N+1; i++){printf("%d ", mylist.BASE[i]);}return 0;}


0 0
原创粉丝点击