统计出带头结点单链表中值等于给定值x的结点个数( C语言)

统计出带头结点单链表中值等于给定值x的结点个数( C语言),第1张

int Search(struct Node pHead , int value)

{

struct Node p=pHead;

int index=0;

while(p)

{

if(p->num== value)

{

index++;

}

p=p->next;

}

return index;

}

void DeleteMin(PNODE pHead)

{

int imin = 0;

PNODE pDelete = pHead, pTemp = 0;

if (pHead->pNext != NULL)

imin = pHead->pNext ->e;

else

return NULL;

while (pHead->pNext != NULL)

{

if (pHead->pNext->e < imin)

{

imin = pHead->pNext->e;

pDelete = pHead;

}

pHead = pHead->pNext;

}

//delete node

pTemp = pDelete->pNext;

pDelete->pNext = pDelete->pNext->pNext;

free(pTemp);

}

带头结点的单链表和不带头结点的单链表

一、两者区别:

1、不带头结点的单链表对于第一个节点的 *** 作与其他节点不一样,需要特殊处理,这增加了程序的复杂性和出现bug的机会,因此,通常在单链表的开始结点之前附设一个头结点。

2、带头结点的单链表,初始时一定返回的是指向头结点的地址,所以一定要用二维指针,否则将导致内存访问失败或异常。

3、带头结点与不带头结点初始化、插入、删除、输出 *** 作都不样,在遍历输出链表数据时,带头结点的判断条件是while(head->next!=NULL),而不带头结点是while(head!=NULL),虽然头指针可以在初始时设定,但是如1所述,对于特殊情况如只有一个节点会出现问题。

二、为什么不带头结点初始化有2种方式,而带头结点只有1种方式呢?

因为不带头结点声明Node

head

时;C编译器将其自动初始化为NULL,于是根本不需要调用InitList(head);也即不带头结点的初始化是个伪 *** 作。而带头结点的初始化在堆开辟了一段内存,需要修改head指针变量指向的地址(即head的值),所以要修改head的值,必须传保存head变量的地址(即二维指针)。而直接调用CreatList(head);相当于传head变量的值,函数修改的是head的副本,无法真正改变head的值。 注:这里可以将head指针看成一个变量(不管它保存的是地址),就比较好理解了。

三、其实本质上还是传值,传址的问题,只不过指针本身保存的地址,让这个过程变得有点纠结。在函数调用需要修改指针变量的指向(value)时,应该传递指针变量的地址(address)。

另外,对于函数的形参是指针时,只要该参数不在左边(即都是右值 *** 作),二维指针(形参)就可以简化为一维指针。如上面带头结点的尾插简化版本。

如果你是要用C语言的话,可以用下面的函数

int judgedesc(node head)

{

    if (head == NULL && head -> next ==  NULL)

    {

        printf("这是一个空链表");

        return 0;

    }

    else

    {

        node p=head->next;

        node q=p->next;

        while (q!=NULL)

        {

            if (p->num < q->num ) return 0;

            p=p->next;

            q=q->next;

        }

        return 1;

    }

}

党员的五个带头是:

1、把好政治纪律关。

党的政治纪律是维护党的政治原则、政治方向和政治路线,规范党组织和党员的政治言论、政治行动、政治立场的行为规则,是党最重要的纪律,是党的全部纪律的基础。

2、把好组织纪律关。

党的组织纪律是党的组织和党员必须遵守的,维护党在组织上团结统一的行为准则,也是提高执行力的重要保证。党员干部要牢记党章党规,摆正个人与党组织的关系;

坚持党员个人服从党的组织,少数服从多数,下级组织服从上级组织,全党各个组织和全体党员服从党的全国代表大会和中央委员会这一最基本的组织纪律。

3、把好工作纪律关。

党员干部必须严明工作纪律,做到矢志担当,有权必有责、有责必担当。对重点工作要主动思考、主动作为、主动攻坚,确保时间进度,以严格的工作纪律和敢于担当的精神,营造团结协作、干事创业的浓厚氛围。

4、把好群众纪律关。

党的群众纪律,是我们党为保持党的组织和全体党员与人民群众的密切联系而制定的行为准则,是我们党在各个历史时期处理党群关系的总的规范,是党的各级组织和党员个人和人民群众交往过程中不能踩踏的行为底线。

5、把好生活纪律关。

生活纪律是党员在日常生活和社会交往中应当遵守的行为规则。很多出问题的领导干部,有一个共同的特点,就是不拘生活小节,追求生活享受,上私人会所,吃山珍海味,包二奶、养情妇,甚至染上赌博、吸毒等恶习,最终一步步堕入违法犯罪的深渊。

扩展资料

党员发展的一般步骤:

1、开展广泛深入的思想教育工作。党组织应十分关心其的思想进步,经常组织学习党的基本知识,宣传党的路线、方针和政策,启发他们树立共产主义信念,教育和引导广大学生积极靠拢党组织。

2、对入党积极分子进培养、教育和考察。向党支部递交入党申请书后,均应列为入党积极分子进行培养、教育和考察。

指定党员进行培养、教育,及时编入本支部的党章学习小组学习,送党校培训,吸收参加党内有关活动,建立培养和考察档案等。党支部每半年要对入党积极分子进行一次考察,有针对性的开展教育工作。

3、确定重点培养对象。经支部党员大会讨论决定,遴选优秀的入党积极分子作为重点培养对象。指定1--2名正式党员作重点培养对象的培养人(联系人),具体负责培养、教育和考察工作。对于成立了党小组的支部,遴选重点培养对象须先经党小组讨论。

4、政治审查。党支部通过党总支,对培养对象的主要家庭成员及主要社会关系的政治表现和历史情况发函调查。

5、确定发展对象。重点培养对象经过培养教育和考察后,如条件已成熟,在征求团组织和非党员同学的意见的基础上,经支部党员大会讨论确定为发展对象。

6、做好发展准备工作。确定两名正式党员作为入党介绍人(可由党组织指定或入党介绍人自己约请,一般由联系人或培养人担任);报党总支预审;填写《入党志愿书》。

7、召开支部党员大会讨论表决。一切准备工作就绪后,召开支部党员大会,按照有关规定和程序进行讨论表决。

8、报上级党组织审批。将支部党员大会通过的预备党员材料报党总支。上级党组织指派专人同入党申请人谈话,进一步考察申请人对党的认识和入党动机,审察发展党员的组织程序,在此基础上作出审批决定。

9、结尾工作。党支部在接到上级党组织预备党员的批准通知后,正式通知本人被吸收为预备党员,并提出希望和要求。张榜公布预备党员名单。

参考资料来源:人民网--党员干部把好“五关” 带头践行“两学一做”

#include

#include

typedef struct _Node

{

int data;

_Node next;

}Node,List;

int getMax_Value(List head)

{

if (head->next == NULL)

{

printf("链表中没有节点\n");

exit(-1);

}

Node ptr = head->next;

int max = ptr->data;

while (ptr->next != NULL)

{

ptr = ptr->next;

if (ptr->data > max)

{

max = ptr->data;

}

}

return max;

}

Node getMax_Address(List head)

{

if (head->next == NULL)

{

printf("链表中没有节点\n");

exit(-1);

}

Node ptr = head->next;

Node max_address = ptr;

while (ptr->next != NULL)

{

ptr = ptr->next;

if (ptr->data > max_address->data)

{

max_address = ptr;

}

}

return max_address;

}

List creatList(int num)//num为创建节点个数

{

List head = (Node)malloc(sizeof(Node));

head->data = 0;

head->next = NULL;

Node ptr = head;

Node node = NULL;

int data;

while (num)

{

printf("请输入节点则值:");

scanf("%d", &data);

node = (Node)malloc(sizeof(Node));

node->data = data;

node->next = NULL;

ptr->next = node;

ptr = node;

head->data++;

num--;

}

return head;

}

void freeList(List head)

{

Node ptr = head;

while (head)

{

head = ptr->next;

free(ptr);

ptr = head;

}

}

int main()

{

List head=creatList(5);

printf("链表的最大值为:%d\n", getMax_Value(head));

printf("链表最大值的地址为:0x%x,%d\n", getMax_Address(head), (getMax_Address(head))->data);

freeList(head);

return 0;

}

c++

#include <iostream>

using namespace std;

struct L {

int data;

L next;

};

int main() {

L a=new L;

a->next=new L;

L b=a;

cout<<"创建单链表,请输入单链表总结点(N>0)"<<endl;

int N;

cin>>N;

for(int i=0; i<N; i++) {

printf("第%d个数字:",i+1);

b->next=new L;

b=b->next;

cin>>b->data;

}

b->next=NULL;

/到这里存储完毕/

/这里开始查找并且插入/

cout<<endl<<"输入寻找的值x"<<endl;

int x;

cin>>x;

b=a;

while(b->next) {

b=b->next;

if(b->data==x)

break;

}

cout<<"输入插入个数m"<<endl;

int m;

cin>>m;

for(int i=0; i<m; i++) {

printf("第%d个数字:",i+1);

L temp=new L;

cin>>temp->data;

temp->next=b->next;

b->next=temp;

b=b->next;

}

/输出/

L p=a;

cout<<"该链表中所含元素:"<<endl;

while (p->next) {

p=p->next;

cout<<p->data<<" ";

}

return 0;

}

运行结果:

创建单链表,请输入单链表总结点(N>0)

5

第1个数字:100

第2个数字:99

第3个数字:80

第4个数字:45

第5个数字:8

输入寻找的值x

80

输入插入个数m

3

第1个数字:1

第2个数字:2

第3个数字:3

该链表中所含元素:

100 99 80 1 2 3 45 8

如果满意的话 请采纳 大晚上的虽然闲着没事,但看在我纯手打的份上,麻烦采纳一下

以上就是关于统计出带头结点单链表中值等于给定值x的结点个数( C语言)全部的内容,包括:统计出带头结点单链表中值等于给定值x的结点个数( C语言)、求一完整程序:编写在带头结点的单链表L中删除一个最小值结点的高效算法、带头结点与不带头结点的单链表的区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9871172.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存