顺序存储结构的插入和删除需要移动大量元素,显然很浪费时间。如果用链表来创建线性表,让两个元素之间能够有联系,找到一个元素就能知道它的下一个元素的位置在哪里。
创建一个线性表的链表
typedef struct Node
{
int data; //数据域
struct Node *next; //指针域
}Node;
typedef struct Node *LinkList;
链表由数据域和指针域组成。
线性表-单链表
单链表的插入
操作如下:
代码如下:
int Linkinsert(LinList *L,int i,int e)
{
int j;
LinkList p,s; //p为线性表L,s为新建的结点,数据域放入要插入的元素
p=*L;
j=1;
while(p&&j<i) //找到第i-1个节点
{
p=p->next;
++j;
}
if(!p||j>i)
{
return ERROR;
}
s=(LinkList)malloc(sizeof(Node)); //为新节点申请空间
s->data=e;
s->next=p->next;
p->next=s;
return OK;
}
单链表的删除
操作如下:
代码如下
int LinkDelet(LinkList *L,int i,int e)
{
int j;
LinkList p,s; //s用来表示将要删除的结点
p=*L;
j=1;
while(p->next&&j<i) //找到第i-1个结点
{
p=p->next;
++j;
}
if(!(p->next)||j>i)
{
return ERROR;
}
s=p->next;
p->next=s->next;
e=s->data;
free(s);
return OK;
}
来源:CSDN
作者:Whitegost
链接:https://blog.csdn.net/Whitegost/article/details/104213198