- 复习前面知识点(指针、结构体、函数)(已完成)
- 整理思维导图(已完成)
- 顺序表(按位置插入、按位置删除和去重、重新写)
- 理解链表的代码,尝试写一下链表的尾插和输出
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;
}
}