第二章-线性表-顺序表(初始化、循环、插入、删除、查找、清空)

常见的定义和方法都在笔记本上
易错点:
【第二章-线性表-顺序表(初始化、循环、插入、删除、查找、清空)】1.插入、删除判断条件不熟悉,经常忘记
2.这六种创建struct、初始化、销毁、清空功能分不太清
3.里面如何表示,有些细节还不太清楚

#include #include #include #define MAXSIZE 9 #define OK 1 #define Size 5typedef int ElemType; typedef int Status; typedef struct Table{ ElemType *head; int length; int size; }table; //初始化 table init_table(); //循环遍历数组 void forEach_table(table t); //插入元素节点 table add_table(table t,int index,int val); //删除元素节点 table del_table(table t,int index); //查询元素节点 int find_table(table t,int val); //清空线性表 table clear_table(table t); int main() { table t1= init_table(); for(int i=0; i){ t1.head[i]=i+1; t1.length++; } //printf("t1.length====%d\n",t1.length); //t1.length表达的是head里元素有几个 //printf("t1.dizhi===%p\n",&t1.length); //&t1.length表达的是存储这个长度所在的地址//TIPS:t1.head[t1.length]=t1.head[5],这里t1.length==5,只是一个数字,在顺序队列中,结构体中int了两个下标,当作所引用 //printf("%p\n",t1.head[t1.length]); //printf("t1.head[5]====%p\n",t1.head[5]); t1=add_table(t1,2,666); t1=del_table(t1,3); int findVal=find_table(t1,666); // printf("%d\n",findVal); t1=clear_table(t1); forEach_table(t1); return 0; }table init_table(){ table t; t.head=(ElemType*)malloc(sizeof(ElemType)*MAXSIZE); if(!t.head) exit(0); //申请内存不足,初始化失败 t.length=0; t.size=MAXSIZE; return t; }void forEach_table(table t){ if(!t.head) exit(0); for(int i=0; i=t.size){ printf("顺序表已满"); exit(0); } if(index>t.length+1 || index<1){ printf("位置不合法"); exit(0); } //TIPS:注意这里的判断关系 for(int i=t.length-1; i>=index-1; i--){ t.head[i+1]=t.head[i]; } t.head[index-1]=val; t.length++; return t; }table del_table(table t,int index){ if(!t.head){ printf("空顺序表"); exit(0); } if(index>t.length || index<1){ printf("删除位置有问题"); } for(int i=index; i

    推荐阅读