首页 > 其他分享 >链表练习4

链表练习4

时间:2023-04-06 17:36:13浏览次数:30  
标签:count LinkList int 练习 next 链表 data Node

已知整型链表,设计算法,删除所有结点值为x的结点,删除的结点个数通过形参返回。

#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node *next;
}Node,*LinkList;
LinkList create(){
LinkList h,r,s;
h=(LinkList)malloc(sizeof(Node));
r=h;
int a;
scanf("%d",&a);
while(a!=-1){
s=(LinkList)malloc(sizeof(Node));
s->data=a;
r->next=s;
r=s;
scanf("%d",&a);
}r->next=0;
return h;
}                                //以上是尾插法建立链表
LinkList find_pre(LinkList h,int x){
LinkList p=h->next,q=h;
while(p&&p->data!=x){
q=p;
p=p->next;                       //求前导
}return q;
}int fun1(LinkList h,int *count,int x,LinkList q){
LinkList p=h->next,s;
while(p){
if(p->data==x){              //如果满足条件,删除此结点   
q->next=p->next;             //让我的后继变成我前导的后继
(*count)++;
q=find_pre(p,x);
}p=p->next;
}return *count;
}
int main(){
LinkList head,p,q;
int count=0;
head=create();
q=find_pre(head,5);
fun1(head,&count,5,q);
printf("%d\n",count);
for(p=head->next;p;p=p->next)
printf("%d",p->data);            //遍历列表,查看是否出错
return 0;
}

头插法建立列表:

LinkList create(){
LinkList h,s;
int x;
h=(LinkList)malloc(sizeof(Node));
h->next=0;
scanf("%d",&x);
while(x!=-1){
s=(LinkList)malloc(sizeof(Node));
s->data=x;
s->next=h->next;             //头的后继变成我的后继
h->next=s;                   //我变成头的后继
scanf("%d",&a);
}return h;
}

标签:count,LinkList,int,练习,next,链表,data,Node
From: https://blog.51cto.com/u_16036037/6173846

相关文章

  • 141. 环形链表
     141. 环形链表解法一:所到之处,寸草不生第一种解法自己写的,巧妙运用了链表的val,只要遍历过,就将节点的值设置为1e9,时间空间复杂度都达到了完美的统一(doge)/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*L......
  • 单向链表找到链表的中点
    偶数为n/2奇数为(n+1)/2点击查看代码ListNode*slow=head,*fast=head;while(fast->next!=nullptr&&fast->next->next!=nullptr){slow=slow->next;fast=fast->next->next;}注:需要判断头结点是否为空......
  • Python小练习:处理字符串
    Python小练习:处理字符串作者:凯鲁嘎吉-博客园 http://www.cnblogs.com/kailugaji/介绍两种处理字符串的方式:1.将英语名词单数转化为复数形式(仅适用于一般形式),2.将字符串(带有下换线_)转化为驼峰化形式。1.word_test.py1#-*-coding:utf-8-*-2#Author:凯鲁嘎吉......
  • 链表反转-JavaDG实现
    对于链表的反转,用常规的迭代法,是很简单的,使用两个指针;对于用递归法,则是很经典题了,我就觉得对于递归方法和常用的迭代法,大家最好都熟悉掌握,不要刻意的去避免哪一点;1•链表反转2○常规的迭代实现:3publicListNodereverseList(ListNodehea......
  • 单链表进阶OJ版--->随机指针问题
    朋友们,晚上好!!今天,推出一篇单链表的随机指针问题!!相较于之前的链表OJ题,本期的链表难度有所提升!!下面请看题:>有一个链表,链表每个结点额外增加一个随机指针random,并且随机指针可以指向链表的任何结点以及空结点至于本题的要求是:复制带随机指针的链表如下图所示:>本题的难度,大致......
  • 2023_4_5 蓝桥杯练习
    《P8671[蓝桥杯2018国AC]约瑟夫环 循环(%)问题》   我尝试用STL中的list与vector进行模拟可以发现复杂度都是>=O(N*K)的,会超时只有通过数学推式来得到全部正确的答案这里简单说一下STLlist与vector中对插入,删除元素的用法:list:......
  • 反转一个单链表
    示例:输入:1->2->3->4->5->NULL输出:5->4->3->2->1->NULL进阶:你可以使用迭代或者递归来反转链表。你能否用两种方法来解决这个问题。思路我写在了代码当中,欢迎指正。/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;......
  • NFS练习题
    NFS练习题1.开放/nfs/share目录,提供给任意用户只读(/etc/exportsro)查询1.任意客户端2.任意的用户​​​​ 服务端showmoutexportfssystemctlstartnfs 修改了nfs配置文件,需要重启什么吗?修改了nfs配置文件,只需要让nfs重新读取该配置文件即可,你都不需要重新,因为你......
  • 四种语言刷算法之重排链表
    力扣143. 重排链表1、C/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/voidreorderList(structListNode*head){structListNode*p=head;intcount=0;while(p){p......
  • 单向链表和双向链表的逆序的两种实现方式
    单向链表的逆序实现方式publicstaticclassNode{privateintval;privateNodenext;publicNode(intval){this.val=val;}}/**实现单向链表的第一种方式,只通过链表指针的重连来实现*/publicstaticNoderece......