1.
2.
按位插入
void insert_pos(seq_p L,datatype num,int pos)
{
if(L==NULL)
{
printf("入参为空,请检查\n");
return;
}
if(seq_full(L)==1)
{
printf("表已满,不能插入\n");
return;
}
if(pos==0)
{
insert_head(L,num);
return;
}
if(pos>=L->len)
{
printf("无法插入:位置不合理\n");
return;
}
if(pos==L->len)
{
insert_tail(L,num);
return;
}
for(int i=L->len-1;i>=pos;i--)
{
L->data[i+1]=L->data[i];
}
L->data[pos]=num;
L->len++;
}
按位删除
void del_pos(seq_p L,int pos)
{
if(L==NULL)
{
printf("入参为空\n");
return;
}
if(pos>=L->len)
{
printf("位置不合理\n");
return;
}
if(pos==0)
{
del_head(L);
return;
}
if(pos==L->len-1)
{
del_tail(L);
return;
}
for(int i=pos;i<=L->len-1;i++)
{
L->data[i]=L->data[i+1];
}
L->len--;
}
去重
void del_rep(seq_p L)
{
if(L==NULL)
{
printf("入参为空\n");
return;
}
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--;
}
}
}
}
3.
link.c
voidlink.c insert_head(link_p H,datatype data)
{
if(H==NULL)
{
printf("入参为空\n");
return;
}
link_p new=create_node(data);
new->next=H->next;
H->next=new;
H->len++;
}
尾插:
void insert_tail(link_p H,datatype data)
{
link_p temp=H;
for(int i=0;i<H->len;i++)
{
temp=temp->next;
}
link_p new=create_node(data);
temp->next=new;
new->next=NULL;
H->len++;
}
输出
void put_link(link_p H)
{
link_p temp=H;
for(int i=0;i<H->len;i++)
{
temp=temp->next;
printf("%d\t",temp->data);
}
printf("\n");
}
main.c
#include "link.h"
int main()
{
link_p H=create_head();
insert_head(H,2);
insert_head(H,1);
insert_tail(H,3);
put_link(H);
return 0;
}