线性链表,线性链表是干什么用的呀是数据里的逻辑结构还是存储结构我怎么
来源:整理 编辑:去留学呀 2023-08-06 15:28:59
本文目录一览
1,线性链表是干什么用的呀是数据里的逻辑结构还是存储结构我怎么
是存储结构
线性链表是具有链接存储结构的线性表,它用一组地址任意的存储单元存放线性表中的数据元素,逻辑上相邻的元素在物理上不要求也相邻,不能随机存取。

2,用C语言怎么建立线性链表
线性链表是一种数据结构。 使用指针在线性表的各个节点进行连接。 struct NODE int value; NODE* next; } 这种结构就是一种线性表的数据结构咯,你使用next指针指向下一个节点。
3,线性链表有什么作用
线性顺序表 是一个 在内存里限定了大小的表,不能合理的控制定义时候的大小会造成空间的浪费或者不足,因为在内存里它们的位置是连续的,所以可以快速的读取,修改某个元素值以及在末尾插入元素,但是要在中间插元素,就要移动大量的元素。而线性链表是动态的 ,它的大小没有限制(在内存足够的情况下,你可以一直申请新的内存结点来存放元素),它在内存里不是连续的,所以不能快速的读取,修改,但是可以动态的扩充大小,这是很牛逼,而且插入元素的时候,不用进行大量的物理内存的移动,只要顺着链找到目标,然后进行链表的插入就可以。
4,什么是非线性链表和线性链表举例回答好的有分送
线性表 就是ABC这样一个个数据按顺序下去的。他们的内存储存也是ABC这样一个个下去的,|A|B|C|...|。就是内存中要连续储存
线性链表 就是数据看上去是ABC这样下去的,内存里面是|B|...|C|...|A|...|这样的混乱顺序排列的,就是内存中储存位置任意。他们用节点指针连接。也就是说A数据后面还有个指针指向B数据的内存地址。
链表 顾名思义包括线性链表,还有什么循环链表,双向链表啊啥的。。
给你画个图把..链表的。(线性链表)
(A,B,C,D,E)
储存地址 数据 指向地址
1 B 99
18 E NULL
28 D 18
50 A 1
99 C 28
这样的话他们储存在1.18。28.50.99.位置上,而且顺序乱来,但显示
出来却是(A,B,C,D,E)
5,线性链表就指单向链表吗双向循环链表不能说是线性链表吗
两个都是线性链表,都是从头指针开始,沿各结点的指针扫描到链表中的所有结点线性表 就是abc这样一个个数据按顺序下去的。他们的内存储存也是abc这样一个个下去的,|a|b|c|...|。就是内存中要连续储存线性链表 就是数据看上去是abc这样下去的,内存里面是|b|...|c|...|a|...|这样的混乱顺序排列的,就是内存中储存位置任意。他们用节点指针连接。也就是说a数据后面还有个指针指向b数据的内存地址。链表 顾名思义包括线性链表,还有什么循环链表,双向链表啊啥的。。给你画个图把..链表的。(线性链表)(a,b,c,d,e)储存地址 数据 指向地址1 b 99 18 e null28 d 1850 a 199 c 28这样的话他们储存在1.18。28.50.99.位置上,而且顺序乱来,但显示出来却是(a,b,c,d,e)
6,线性链表
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
void init(LinkList &L); //初始化链表函数
void input(LinkList &L); //建立链表函数
void insert(LinkList &L); //插入函数
void delet(LinkList &L); //删除函数
int main()
{
LinkList L; //头结点
init(L);
input(L);
insert(L);
delet(L);
return 0;
}
void init(LinkList &L)
{
L=(struct LNode *)malloc(sizeof(struct LNode));
if(!L)
{
printf("申请内存失败!");
exit(0);
}
L->next=NULL;
}
void input(LinkList &L)
{
LinkList p,q;
int i;
q=L;
printf("输入:\n");
for(i=1;i<=10;i++)
{
p=(struct LNode *)malloc(sizeof(struct LNode));
if(!p)
{
printf("申请内存失败!");
exit(0);
}
scanf("%d",&p->data);
q->next=p;
p->next=NULL;
q=p;
}
p=L->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
void insert(LinkList &L)
{
int i;
int e;
int j;
LinkList p,s;
printf("输入插入结点的位置 数据:\n");
scanf("%d%d",&i,&e);
p=L;j=0;
while(p&&j<i-1) {p=p->next;j++;} //查找结点
if(!p||j>i-1) exit(0);
s=(struct LNode *)malloc(sizeof(struct LNode));
if(!s)
{
printf("申请内存失败!");
exit(0);
}
s->data=e;
s->next=p->next;
p->next=s;
p=L->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
void delet(LinkList &L)
{
int i;
int j;
LinkList p,q;
printf("输入删除结点的位置:\n");
scanf("%d",&i);
p=L;j=0;
while(p->next&&j<i-1) {p=p->next;j++;}
if(!(p->next)||j>i-1) exit(0);
q=p->next;
p->next=q->next;
free(q);
p=L->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
文章TAG:
线性 链表 干什么 什么 线性链表