问题及描述:
/*
* Copyright (c) 2015, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:3.3.cpp
* 作 者:于东林
* 完成日期:2015年9月18日
* 版本号:v3.3.0
* 问题描述:增加插入数据元素ListInsert以及初始化线性表InitList的运算,
* 输入描述:无
* 程序输出:线性表的结果
*/
程序及代码:
#include <stdio.h> #include <malloc.h> #define MaxSize 50 typedef int ElemType; typedef struct { ElemType data[MaxSize]; int length; } SqList; void InitList(SqList *&L);//初始化线性表InitList(L) bool ListEmpty(SqList *L);//判定是否为空表ListEmpty(L) void DispList(SqList *L);//输出线性表DispList(L) bool ListInsert(SqList *&L,int i,ElemType e);//插入数据元素ListInsert(L,i,e) //初始化线性表InitList(L) void InitList(SqList *&L) //引用型指针 { L=(SqList *)malloc(sizeof(SqList)); //分配存放线性表的空间 L->length=0; } //判定是否为空表ListEmpty(L) bool ListEmpty(SqList *L) { return(L->length==0); } //输出线性表DispList(L) void DispList(SqList *L) { int i; if (ListEmpty(L)) return; for (i=0; i<L->length; i++) printf("%d ",L->data[i]); printf("\n"); } //插入数据元素ListInsert(L,i,e) bool ListInsert(SqList *&L,int i,ElemType e) { int j; if (i<1 || i>L->length+1) return false; //参数错误时返回false i--; //将顺序表逻辑序号转化为物理序号 for (j=L->length; j>i; j--) //将data[i..n]元素后移一个位置 L->data[j]=L->data[j-1]; L->data[i]=e; //插入元素e L->length++; //顺序表长度增1 return true; //成功插入返回true } int main() { SqList *sq; InitList(sq); ListInsert(sq, 1, 5); ListInsert(sq, 2, 3); ListInsert(sq, 1, 4); DispList(sq); return 0; }
运行结果:
知识点总结:
链表的描述是抽象的,把抽象思维具体化,可以更好地学习。
学习心得:
学习注重学习方法,好的学习方法能够提高学习效率。