- 复习前面知识点(指针、结构体、函数)(已完成)
- 整理思维导图(已完成)
- 顺序表(按位置插入、按位置删除和去重、重新写)
- 理解链表的代码,尝试写一下链表的尾插和输出
3.顺序表(按位置插入、按位置删除和去重、重新写)
按位置插入
void insert_pos(seq_p L,datatype value,int pos)
{if(L==NULL){printf("入参为空,请重新输入\n");return;}if(seq_full(L)){printf("表已满,不能插入\n");return;}if(L->len < pos || pos < 0){printf("插入位置错误\n");return;}else{for(int i=L->len-1;i>=pos;i--){L->data[i+1]=L->data[i];}L->data[pos] = value;L->len++;}}
按位置删除
void del_pos(seq_p L,int pos)
{if(L==NULL){return;}if(seq_empty(L)){printf("表为空\n");return;}if(pos > L->len){printf("输入不合理\n");return;}for(int i=pos+1;i<L->len;i++){L->data[i-1] = L->data[i];}L->len--;
}
去重
void dup(seq_p L)
{for(int i=0;i<L->len;i++){for(int j=i+1;j<L->len;j++){if(L->data[i] == L->data[j]){del_pos(L,j);j--;}}}
}
4.理解链表的代码,尝试写一下链表的尾插和输出
//尾插
void insert_tail(link_p H,datatype data)
{link_p new = creat_node(data);link_p tail = H;while(tail->next != NULL){tail = tail->next;}tail->next = new; new->next = NULL; H->len++;}//链表输出
void out_put(link_p H)
{link_p L = H->next;for(int i=1;i<=H->len;i++){printf("%-3d",L->data);L = L->next;}}