链表

单链表插入

  1. 从头开始遍历列表
  2. 找到第i-1个节点
  3. 将指针域指向第i-1个节点的next
  4. 新建节点s值为data
  5. 将next指向data

单链表删除

  1. 从头开始遍历列表
  2. 找到第i-1个节点
  3. 将指针域从第i-1个节点的next指向第i+1个节点
  4. 释放第i个节点的内存空间

代码

参考资料 C语言实现单链表的创建及基本操作

插入

void enterlist(node l,int i,int e){//单链表的插入 在第i个位置 插入值为e的数据元素
node p,s;//新建两个结点指针
int k=0;
if(i<=0)printf("插入的位置不合理\n");
p=l;//从头开始遍历
while(p!=NULL&&k<i-1) {//查找第i-1个结点
p=p->next;
k++;
}
if(p==NULL){//当遍历完整个表也没找到时,说明插入位置不合理
printf("插入的位置不合理\n") ;
}
s=(node
)malloc(sizeof(node));//新建一个结点S
s->data=e;
s->next=p->next;// 因为p时第i-1个结点 故 s的指针域应该指向第i个结点
p->next=s;
printf("插入成功!\n");
}

删除

void dellist(node *l,int i){//单链表删除操作 删除第i个元素
node p,r;
int k=0;
p=l;
while(p->next!=NULL&&k<i-1){
p=p->next;
k++;
}
if(p->next==NULL){
printf("删除位置不合法!\n");
}
r=p->next;
p->next=r->next;//修改指针删除结点
printf("删除的元素是%d\n",r->data);
free(r);//释放内存空间
}

posted @ 2023-11-10 20:29  20231302邱之钊  阅读(5)  评论(0编辑  收藏  举报