c语言中的链表
A. c语言中链表
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
structrr
{
inti;
structrr*next;
};
structrr*creat(void)
{
inti,j;
structrr*p1,*p2,*t;//<==============
p1=p2=(structrr*)malloc(sizeof(structrr));
for(i=0;;)
{
printf("请输入第%d个数据(0时结束) ",++i);
scanf("%d",&j);
//p1->i=j;
if(j==0)
break;
p1->i=j;//<==============
//p1=p1->next;
t=(structrr*)malloc(sizeof(structrr));//<==============
p1->next=t;//<==============
p1=t;//<==============
p1->next=NULL;//<==============
}
p1->next=NULL;//<==============
returnp2;
}
voidprint(structrr*k)
{
inti;
for(i=1;k->next!=NULL;i++)
{
printf("第%d个节点的数据is%d ",i,k->i);
k=k->next;
}
}
intmain()
{
structrr*head;
head=creat();
print(head);
printf("over ");
return0;
}
B. C语言里的链表
首先你要明白链表是什么,链表中有1个数据区域和1个指针区域,指针区域存放的是下一个节点的地址(如果有下个节点的话),这是单链表,如果是双链表的话,那么有2个指针区域,1个指向前1个节点的地址,1个指向后1个节点的地址,如果对链表不是很熟悉,得先去看看数据结构,链表并不是数据结构里面的东西。
接下来我们看看在C语言中如何表示链表。
typedef struct Linklist
{
int data;
struct Linklist * next;
}Linklist;
定义一个结构体来表示链表,int data 代表数据,根据实际情况自己修改,struct Linklist * next 代表指针,指向下1个节点的,比如现在有3个节点A B C ,如果他们的next为NULL ,这3个节点就是毫无关系的,分散的,如果定义A->next =&B B->next=&C 那么他们就变成链表了,即A->B->C
如果是双链表,那么在结构体中定义的时候加上struct Linklist * prev 这个指针指向前1个节点的地址,比如A->next=&B B->prev=&A 那么现在双链表就为A B相互指向,这里不好画出来就没画了。
至于链表的添加,删除之类的可以再看看C语言里面的,如果还不会在来问我吧~
C. C语言的链表怎么用
c语言中,动态链表的使用方法:
1、创建节点的结构体类型,里面要有一个指向此类型结构的指针。
2、建立一个头指针,一个尾指针
3、每次有新节点进入链表时,用malloc分配空间,然后用链表尾端的节点指针指向新节点,新节点的指针指向null。
D. C语言中怎么定义链表,最好把各个代码都详细的解释一下!
/*creat
a
list*/
#include
"stdlib.h"
#include
"stdio.h"
struct
list
{
int
data;
struct
list
*next;
};
typedef
struct
list
node;
typedef
node
*link;
void
main()
{
link
ptr,head;
int
num,i;
ptr=(link)malloc(sizeof(node));
ptr=head;
printf("please
input
5
numbers==>\n");
for(i=0;i<=4;i++)
{
scanf("%d",&num);
ptr->data=num;
ptr->next=(link)malloc(sizeof(node));
if(i==4)
ptr->next=NULL;
else
ptr=ptr->next;
}
ptr=head;
while(ptr!=NULL)
{
printf("The
value
is
==>%d\n",ptr->data);
ptr=ptr->next;
}
}
上面是一个简单的创建链表的C程序。所谓链表形象的讲就是一个数据块里面存有数据,并且存有下一个数据的指针,这样一个指一个形成一个数据链。这个数据链可以被操作,例如插入数据,删除数据,等。至于指令,首先定义一个结构体,它存有数据和指向下一个数据块的指针。然后分配空间。注意最后一个为NULL,当然你也可以指向开头一个数据块形成一个循环链表。
E. C语言中的链表怎么理解
链表是相同类型的若干个结构体用其自身携带的指针按照一定顺序串联成的一个链。
举个简单例子进行类比:
struct node{
int a;
struct node *next;
};
把这个链表节点的结构体struct node看作是人,结构体内的next指针看作是人的一只手,这只手只能用于指向人(别人或自己)。
如果有多个人排成一排,每个人都举起右手指向右边的人,就形成一个人组成的链表。
F. 计算机c语言中什么是链表
简单来说就是“承上启下”,区别于正常数组,存储的时候不是一连串连续的内存地址。
链表的特点在于结点,struct stu{
int num;
int score;
struct stu *next;
}
这就是一个简单的链表,
上边两个是数据域,最后一个是指针域
指针域交代了下一个数据是存在哪里的,
这样计算机就可以直接去找到了。
这样便于插入和删除,缺点就是同等的空间下,链表存的数据少,因为他多了指针域。
G. C语言 中的链表究竟是什么老师讲的听不懂
比如说 数组 他的存储 是一块 连续的空间 一整块
链表 就是 可以分散存储 只有这个空间 够用 就可以存储 不用 分配 一块 很大的连续空间 也就是 “见缝插针”的意思
H. c语言中的链表是什么
就是一连续内存空间,类似于数组,不过数组的内存空间一旦初始化就是不变的。
链表开始是一个“头指针”,定义了链表开始的位置,下面是像链条一样的一串节点,每个节点包含数据部分和指针部分。前一节点的指针指向后一节点,最后一个节点是数据和空地址,表示结束。
好处在于空间是动态分配的,需要多长可以一直链下去。
I. c语言链表,求用通俗的话解释
链表是一种常见的重要的数据结构.它是动态地进行存储分配的一种结构.我们知道,用数组存放数据时,
必须事先定义固定的长度(即元素个数).比如,有的班级有100人,而有的班只有30人,如果要用同一个数组先后存放不同班级的学生数据,则必须定义长度为100的数组.如果事先难以确定一个班的最多人数,则必须把数组定得足够大,以能存放任何班级的学生数据.显然这将会浪费内存.链表则没有这种缺点,它根据需要开辟内存单元.图10.11表示最简单的一种链表(单向链表)的结构.链表有一个"头指针"变量,图中以head表示,它存放一个地址.
该地址指向一个元素.链表中每一个元素称为"结点",每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址.课以看出,head指向第一个元素;第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,它称为'表尾",它的地址部分放一个"NULL"(表示"空地址").链表到此结束.
可以看到:链表中各元素在内存中可以不是连续存放的.要找某一元素,必须先找到上一个元素,根据它提供的下一元素地址才能找到下一个元素.
如果不提供"头指针"(head),则整个链表都无法访问.链表如同一条铁链一样,一环扣一环,中间是不能断开的.打个通俗的比方:幼儿园的老师带领孩子出来散步,老师牵着第一个小孩的手,第一个小孩的另一只手牵着第二个孩子,……,这就是一个"链",最后一个孩子有一只手空着,他是"链尾".要找这个队伍,必须先找到老师,然后顺序找到每一个孩子.
J. c语言链表
指针在x86系统里大小是32位4个字节,在64位系统是8字节大小。指针好比一个盒子,盒子里有个东西也就是它指向的内容,内容是一个实体对象的首地址。盒子本身不能存放实体对象,就好比盒子里有张名片,通过名片你可以找到这个人,总不能把人放盒子里吧。
得有这个人然后把找到这个人的名片放盒子里。