数据结构—删除带头节点的单链表中第一个值为x的节点

//非递归

bool delete(LNode *L,int x){

    LNode *p=L;

   while(p!=null && p->next->data==x) //遍历链表,找到第一个值为x的节点

      p=p->next;

   if(p == null) //如果没有找到 ,就退出循环

    return false; //删除失败

   LNode *s=p->next; //辅助指针

  p->next=s->next; //跳过x节点

  free(s); //释放节点

   return true; //删除成功

}

//递归

bool delete(LNode * L,int x){

     if(L !=null){  //递归的出口

       if(L->next->data==x) //判断节点是否为x

         LNode *s=L->next;

         L->next=s->next;

         free(s)

         return true;

else

     delete(L->next , x); //递归地判断下一个节点

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用 C 语言创建带头节点单链表来存储输入的若干整数的示例代码: ```c #include <stdio.h> #include <stdlib.h> typedef struct Node { int data; // 数据域 struct Node* next; // 指针域 } Node; // 创建带头节点单链表 Node* createLinkedList() { Node* head = (Node*)malloc(sizeof(Node)); // 创建头节点 head->next = NULL; // 头节点的指针域初始化为 NULL return head; } // 在链表尾部插入节点 void insert(Node* head, int data) { Node* node = (Node*)malloc(sizeof(Node)); // 创建新节点 node->data = data; // 新节点的数据域为传入的数据 node->next = NULL; // 新节点的指针域初始化为 NULL Node* p = head; while (p->next != NULL) { // 找到链表尾部 p = p->next; } p->next = node; // 将新节点插入到链表尾部 } // 输出链表的所有节点 void printLinkedList(Node* head) { Node* p = head->next; // 从首节点开始遍历 while (p != NULL) { printf("%d ", p->data); // 打印节点数据 p = p->next; // 移动指针到下一个节点 } printf("\n"); // 换行 } int main() { int n, data; printf("请输入整数的个数:"); scanf("%d", &n); Node* head = createLinkedList(); // 创建带头节点单链表 for (int i = 0; i < n; i++) { printf("请输入第 %d 个整数:", i + 1); scanf("%d", &data); insert(head, data); // 在链表尾部插入节点 } printf("链表的元素为:"); printLinkedList(head); // 输出链表的所有节点 return 0; } ``` 运行示例: ``` 请输入整数的个数:5 请输入第 1 个整数:1 请输入第 2 个整数:2 请输入第 3 个整数:3 请输入第 4 个整数:4 请输入第 5 个整数:5 链表的元素为:1 2 3 4 5 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值