2019-10-26

1.复习c的struct的时候发现了一篇关于struct和class的对比
https://www.jianshu.com/p/409f931c17d9
https://zhuanlan.zhihu.com/p/47808468
虽然依旧觉得这两者差别不大,还是尽量用class比较好(封装),而且有private,安全性较高
2.malloc的使用
向malloc申请的空间大小是以字节为单位的,返回的结果是void*,需要类型转换为自己需要的类型
格式

#include<stdlib.h>
void* malloc(size_t size);
(int*)malloc(n*sizeof(int));
a=(int*)malloc(number*sizeof(int));
free(a);

注意,申请后必须用free()释放掉,否则长时间会引起系统崩溃(内存不够用)
3.线性表
类型名称:线性表(List)
操作集:L包含在List中

List MakeEmpty():初始化一个空线性表L;

ElementType FindKth(int K,List L):根据位序K,返回相应元素;
int Find(ElementType X,List L):在线性表L中查找X的第一次出现位置;
void Insert(ElementType X,int i,List L):在位序i前插入一个新的元素X;
void Delete(int i,List L):删除指定位序i的元素;
int Length(List L):返回线性表L的长度n;

顺序表中基本操作的实现
1.初始化。

List MakeEmpty( ) { 
List PtrL;
PtrL = (List )malloc( sizeof(struct LNode) );
PtrL->Last = -1;
return PtrL; }

2.查找

int Find( ElementType X, List PtrL ) { int i = 0;
while( i <= PtrL->Last && PtrL->Data[i]!= X ) i++;
if (i > PtrL->Last) return -1; /* 如果没找到,返回-1 */
else return i; /* 找到后返回的是存储位置 */

3.插入
①判断插入位置i是否合法(1<=i<=n+1),不合法返回ERROR
②判断顺序表存储空间满了没,or ERROR
③将第n个至第i个位置的元素后移一位,空出第i个位置
④插入新元素
⑤表长加一,length++

void Insert( ElementType X, int i, List PtrL )
{ int j;
if ( PtrL->Last == MAXSIZE-1 ){ /* 表空间已满,不能插入*/
printf("表满"); 
return; 
} 
if ( i < 1 || i > PtrL->Last+2) { /*检查插入位置的合法性*/
printf("位置不合法");
return; 
} 
for ( j = PtrL->Last; j >= i-1; j-- )
PtrL->Data[j+1] = PtrL->Data[j]; /*将 ai~ an倒序向后移动*/
PtrL->Data[i-1] = X; /*新元素插入*/
PtrL->Last++; /*Last仍指向最后元素*/
return; 
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 多个函数: #include void butler(void); /* ANSI/IOS c函数原型*/ ...
    Morn1ngstar阅读 121评论 0 2
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,729评论 0 3
  • 第二十五章:马路奇情 张红一见到气势汹汹的金菲菲就吓得推开了高宁拼命往后退。金菲菲立即冲上前拉住了...
    廖富香阅读 420评论 0 2
  • 电影《幸福来敲门》 108 病房 日 内 苏达明脸色苍白地躺在病床上。 刘珍走到苏达明面...
    廖富香阅读 364评论 0 2
  • 早盘银行等权重板块带动股指迅速上攻,再次刷新了新高,但很快就一路震荡下行,尾盘沪指翘尾收红,创业板小幅下跌...
    我不是股市高手阅读 121评论 0 0