1. 什么是c语言里面的结点啊
节点就是一个位置,其中存放着相应的数据。
如果说宿舍楼是一个链表,那么每间宿舍就是一个节点,里面的学生就是相应的数据
2. 求各位给解释(c语言程序)
见过佛珠吧,一个链表就是这串佛珠,而其上的每一个珠子就是一个个的节点。(当然,佛珠可以看成是个循环链表)
C中的数据结构链表中的节点是由两部分组成,一部分称之为数据,一部分称之为指示器(即用来指出它的前趋或后继结点的地址值),将这些节点通过指示器部分串接起来,就构成了链表。
3. c语言什么叫节点
你说的节点应该是数据结构链表的组成单元吧。在链表中每个组成单元成为一个节点。这个节点通常是一个结构体。结构体是c语言的一种数据类型。
4. c语言节点和结点是什么意思求具体解释
结点,是指终结的点,最后的点。而节点则是一条线段(路径)上任意选的一个点都可以称为节点.
5. c语言关于链表,节点,结构体的疑问
typedef node*ming; 定义ming为node类型的指针。以后使用 ming a ;相当于是node *a
node **nam; 指向指针的指针类型
node *a; 单纯指针类型
6. C语言 建立链表(链表的结点类型与成员个数等由学生自己定义)
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#include"malloc.h"
#include"conio.h"
/*定义DataType为int类型*/
typedef int DataType;
#define TRUE 1
#define FALSE 0
/*单链表的结点类型*/
typedef struct LNode
{DataType data; <br/> struct LNode *next; <br/> }LNode,*LinkedList;
/*初始化单链表*/
LinkedList LinkedListInit()
{LinkedList L; <br/> L=(LinkedList)malloc(sizeof(LNode)); <br/> L->next=NULL;<br/> printf("初始化单链表成功\n"); <br/> return L; <br/>}
/*清空单链表*/
void LinkedListClear(LinkedList &L)
{L->next=NULL; <br/> printf("链表已经清空\n"); <br/>}
/*检查单链表是否为空*/
int LinkedListEmpty(LinkedList &L)
{if(L->next==NULL) <br/> {printf("单链表为空\n"); return TRUE;}
else
{printf("单链表非空\n");return FALSE;}
}
/*遍历单链表*/
void LinkedListTraverse(LinkedList &L)
{LinkedList p; <br/> p=L->next; <br/> if(p==NULL) <br/> printf("单链表为空表\n"); <br/> else <br/> {printf("链表中的元素为:\n"); <br/> while(p!=NULL) <br/> {printf("%d ",p->data); p=p->next;}
}
printf("\n");
}
/*求单链表长度*/
int LinkedListLength(LinkedList &L)
{LinkedList p; <br/> int j; <br/> p=L->next; <br/> j=0; <br/> while(p!=NULL) <br/> { j++; p=p->next;}
return j;
}
/*从链表中查找元素*/
LinkedList LinkedListGet(LinkedList &L,int i)
{LinkedList p;<br/> p=L->next;int j=1; <br/> while(p&&j<i) {p=p->next; j++;}
if(p) printf("位序为%d的元素的值为%d\n",i,p->data);
else printf("查询位置不正确\n");
}
/*从链表中查找与给定元素值相同的元素在顺序表中的位置*/
int LinkedListLocate(LinkedList &L,DataType x)
{LinkedList p;int i=1; <br/> p=L->next; <br/> while(p && p->data != x) {p=p->next;i++;}
if(p) {printf("所查找的元素%d在表中的位置为%d\n",x,i);return i; }
else {printf("所查找的元素%d不存在\n",x);return 0; }
}
/*向链表中插入元素*/
void LinkedListInsert(LinkedList &L, int i, DataType x)
{LinkedList p,s;<br/> int j=0; p=L; <br/> while(p&&j<i) {p=p->next;j++;}
if(!p||j>i) printf("插入位置不正确\n");
else
{s=(LNode *)malloc(sizeof(LNode)); <br/> s->data=x; <br/> s->next=p->next; <br/> p->next=s; <br/> printf("在表中第%d个节点后插入%d成功\n",i,x); <br/> }
}
/*从链表中删除元素*/
void LinkedListDel(LinkedList &L,int i)
{ LinkedList p,q;
int j=0;
p=L;
while(p->next&&j<i-1) {p=p->next;j++;}
if(p->next==NULL)
printf("删除位置不正确\n");
else
{q=p->next;p->next=q->next;free(q);<br/> printf("第%d个元素已从链表中删除\n",i);<br/> }
}
/*最后改好的将头插发改为尾插法了*/
LinkedList LinkedListCreat(LinkedList&L,int n) /*建立单链表*/
{ int i;
DataType x;
LinkedList p;
L=(LinkedList)malloc(sizeof(LNode));
L->next=NULL;
for(i=n;i>0;--i)
{p=(LinkedList)malloc(sizeof(LNode));<br/> printf("请依次输入链表中的元素:");<br/> scanf("%d",&x);<br/> p->data=x;<br/> p->next=L->next;L->next=p;<br/> }
printf("输入完毕\n");
return L;
}
main()
{printf("请用数字键选择操作\n\n");<br/> printf("1.初始化\n");<br/> printf("2.建立单链表\n");<br/> printf("3.清空\n");<br/> printf("4.求链表长度\n");<br/> printf("5.检查链表是否为空\n");<br/> printf("6.遍历链表\n");<br/> printf("7.从链表中查找元素\n");<br/> printf("8.从链表中查找与给定元素值相同的元素在顺序表中的位置\n");<br/> printf("9.向链表中插入元素\n");<br/> printf("0.从链表中删除元素\n\n");<br/> printf("按其他键退出\n"); <br/> <br/>LinkedList L;<br/>int i,x,n,quit=0;<br/>while(!quit)<br/>switch(getch()) <br/>{<br/>case '1':L=LinkedListInit(); break;<br/>case '2':printf("请输入需要的链表的长度为:");scanf("%d",&n);L=LinkedListCreat(L,n); break; <br/>case '3':LinkedListClear(L);break; <br/>case '4':printf("链表的长度为 %d(不含头节点)\n",LinkedListLength(L)); break; <br/>case '5':LinkedListEmpty(L); break; <br/>case '6':LinkedListTraverse(L); break; <br/>case '7':printf("请输入待查询元素在链表中的位置:");scanf("%d",&i);LinkedListGet(L,i); break; <br/>case '8':printf("请输入待查询元素的值:"); scanf("%d",&x); LinkedListLocate(L,x); break; <br/>case '9':printf("请输入插入元素的位置和值(中间用逗号隔开):\n"); scanf("%d,%d",&i,&x); <br/> LinkedListInsert(L,i,x); break; <br/>case '0':if(LinkedListEmpty(L)==1) printf("链表已经为空,不能删除\n");<br/> else printf("请输入待删除元素的位置:\n"); scanf("%d",&i); LinkedListDel(L,i);<br/> break; <br/><br/>default:quit=1; <br/>}
}
7. C语言链表中q->next=p;表示什么意思
q->next = p; 表示将节点p加入到节点q之后。
意思:使当前指针指向链表的下一个结点。
一般作用在数据结构中的单链表里由应用,语句中的p一般指向一个结构体类型的数据,此类型的数据通常表示节点;结构体里存放的一些数据和记录下一个节点地址的指针变量next;这个next就好比链条一样,连接着一个个节点。
->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么要用指针取出结构体中的数据,就要用到“->”.
(7)c语言节点类型的定义扩展阅读
链表的特点:
1、n个节点离散分配
2、每一个节点之间通过指针相连
3、每一个节点有一个前驱节点和一个后继节点
4、首节点没有前驱节点,尾节点没有后继节点
创建链表前须知
首节点:存放第一个有效数据的节点。
头节点:在单链表的第一个结点之前附设一个结点,它没有直接前驱,称之为头结点,头结点的数据域可以不存储任何信息,指针域指向第一个节点(首节点)的地址。头结点的作用是使所有链表(包括空表)的头指针非空。
头指针:指向头节点的指针。
尾节点:存放最后一个有效数据的节点。
尾指针:指向尾节点的指针。
8. C语言节点
q=p->next;
p->next=q->next;
free(q);
这个答案好像书上都有的吧。
9. C语言版,数据结构
用递归。如果(*(A.left).left)=0说明是子节点了。
剩下的就和遍利的算法一样,用递归。