线性表的基本操作
线性表基本操作
- 插入删除
- 建表
- 划分
- 归并
- 逆置
- 去最值
- 其他
插入操作
- 判断位置是否合法
- 取值 0 到 length
- 小于maxSize
- 移动元素从后往前
调整顺序表length的长度
删除操作
- 顺序从前往后移动
- 调整length长度
清零 length=0,元素虽然留在数组,但是可以认为是隐藏的,当length等于0时,不可以再删除元素
int deleteElem(int sqList[],int &length,int p,int &e) { /*首先判断参数是否合法*/ if(p<0 || p>length-1){ return 0; } e = sqList[p]; for(int i=p;i<length-1;++i){ sqList[i]=sqList[i+1]; /*注意要变动静态表的长度*/ --length; } return 1; }
建表(链表分为头插法和尾插法)
- 带头结点head指针
- 一开始没有指向
数据域的来源,一个是键盘输入,一个是数组提供
/*尾插法Rear,一般用带头节点的单链表*/ void createLinkListRear(LNode *&head) { head = (LNode*)malloc(sizeof(Lnode)); head->next = NULL;/*需要初始化*/ /*定义两个指针一个是当前的p,一个是尾节点r*/; LNode *p = NULL,*r = head; int n; std::cin>>n; // scanf("%d",&n) for(int i=0;i < n ; ++) { p = (LNode*)malloc(sizeof(LNode)); p->next = NULL; std::cin>>p->data;//scanf("%d",&(p->data)); /*建好之后,r节点为尾节点,p节点需要基础*/ p->next = r->next; r->next = p; r = p; } }