链表的问题的: head为链表头指针,那么p=head中的p指向第几个元素,麻烦分有头节点和无头节点回答。谢谢
作者&投稿:第齿 (若有异议请与网页底部的电邮联系)
思路是这样理解的,但是要看具体题目!。你只要知道,单链表的节点里面有2个元素,一个是寸要放的数据,一个是一下个链表的地址。这样才能把链串起来!
但是核心的要点要弄明白:这个链表是带头节点,还是不带头节点!。
带头的话,那么p->next指向第一个元素
不带头的话。head就是第一个元素地址,所以p=head,p->next指向第二个元素。
//赋值那步省略了,看图,有不明白的,请提出。
【1】链表每个节点其实都没有名字的吧?只有头结点,尾结点有指针(有名字)
【2】只有头结点,生成链表:有头插法和尾插法(增加尾指针来操作),下面是用尾插法建立链表的演示,分四步。头插法:输入的数据的顺序和数据在链表中的顺序的相反的,而尾插法是一致的。
1,无头节点:表头指针head指向链表的第一个元素,由于p=head,则将head的值赋予p,即将链表的第一个元素的地址赋予p,则p指向链表的第一个元素;
1,有头结点,那么表头指针应指向链表的头结点,根据数据结构的解释,头结点设在链表的第一个元素之前,头结点的数据域可以什么都不存或存储链表长度等附加信息,指针域存储指向第一个结点的指针,故此可以推出链表头指针指向头结点,同理p指向头结点。
参考资料:数据结构(c语言版)
纯手打,望采纳,谢谢!!
蠹侦格拉: 你好,就你说的两种情况: 1,无头节点:表头指针head指向链表的第一个元素,由于p=head,则将head的值赋予p,即将链表的第一个元素的地址赋予p,则p指向链表的第一个元素; 1,有头结点,那么表头指针应指向链表的头结点,根据数据结构的解释,头结点设在链表的第一个元素之前,头结点的数据域可以什么都不存或存储链表长度等附加信息,指针域存储指向第一个结点的指针,故此可以推出链表头指针指向头结点,同理p指向头结点. 参考资料:数据结构(c语言版) 纯手打,望采纳,谢谢!!
托里县18834378234: 已知head为带头结点的单循环链表的头指针,链表中的数据元素依次为(a1,a2,a3,a4,…已知head为带头结点的单循环链表的头指针,链表中的数据元素依次... - ?
蠹侦格拉:[答案] 1、A的data数组中元素依次为a2,a4,a6...,A的length元素为(n/2)下取整 2、该程序将单循环链表中排在偶数次序的元素(也就是第2,4,6,8,10...)赋值到顺序表A中
托里县18834378234: 2.设Head为带表头结点的单链表的头指针,试写出算法:若为非空表,则输出首结点和尾结点的值(data值);否则输 - ?
蠹侦格拉: if(head==NULL){ printf("Empty list!"); } else{ printf("%d",head->data); p=head; while(P->next!=NULL){ p=p->next; } printf("%d",p->data); }主要程序这样写就行了.
托里县18834378234: 设有一以head为头指针的带头结点的单链表,链表中的结点信息均为整数 - ?
蠹侦格拉: include <stdio.h>#include <stdio.h> typedef int elemtype; typedef struct linknode {elemtype data;struct linknode *next; }nodetype;nodetype* create() {elemtype d;nodetype *h = NULL,*s,*t;elemtype i = 1;printf("create link Node:\n");while (1)...
托里县18834378234: 假设有一个链表 并有一个头指针head指向第一个节点 - ?
蠹侦格拉: 思路是这样理解的,但是要看具体题目!.你只要知道2113,单链表的5261节点里面有2个元素,一个是寸要放的数据,一个是一下个链表的地址.这样才能把链串起来!4102 但是核心的要点要弄明白:1653这个链表是带头节点,还是不带头节点!.带头的话,回那么p->next指向第一个元答素 不带头的话.head就是第一个元素地址,所以p=head,p->next指向第二个元素.
托里县18834378234: 编写程序. 设Head为带表头结点的单链表的头指针,试写出算法:若为非空表,则输出:最大结点和最小结点的值(data值);否则,输出:“Empty list”. - ?
蠹侦格拉: 我写了个 可以看看 随机生成3组的#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <time.h> typedef struct Node { int data; struct Node *next; }List; void PRINT(List *head)//题目要求的函数 { List *p; int max=0,min=0; if(!head) { printf...
托里县18834378234: 某带头结点的单链表的头指针为head,则判定该链表为非空的条件是? - ?
蠹侦格拉: 判定该链表为非空的条件是:head->next!=null. 带头节点的情况下,链表空时还会存在一个节点,所以head不为空,head->next为空 不带头节点的情况下,链表空时,没有任何节点,head指向null. 无论是否有头结点,头指针始终指向链表的...
托里县18834378234: C语言中,创建链表时,为什么head指针也是结构体型的指针变量?head中不是没有数据域,只是一个指针吗? - ?
蠹侦格拉: 之所以使用链表头head,目的是为了操作链表方便.head是一个特殊的结点(不是指针),其数据域不使用,尤其在双向链表中,head必须是一个结点,而不能是指针.
托里县18834378234: C语言链表中head 有什么用 - ?
蠹侦格拉: 就是你的链表的表头了,链表好比一条绳索,这是绳索的一头,你只有找到这一头才能继续往下面查找其他的,好比顺藤摸瓜.....
托里县18834378234: 这样理解头指针对吗? - ?
蠹侦格拉: 纠正一下,head是指针,要用head->next写法,另外最后一句也有问题,应该是:head->next==null,head的值指向头结点,头结点的指针成员next指向首结点(next保存首结点地址),根据next是否为空来作出判断.因此类中维护链表时必须时刻注意,当创建链表后必须将首结点地址赋值给head的next指针(链接),当链结点全部删除时,必须将head的next设置为null.