当前位置:首页 » 编程语言 » c语言库有线性表吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言库有线性表吗

发布时间: 2022-05-09 01:26:25

c语言线性表

不带头结点, 那么链表为空就是第一个节点就是空。 也就是L==NULL.
选A。
PS :
B是带头结点链表为空的判断条件。
C是带头结点循环链表为空的判断条件。
D是不带头结点链表非空的条件。

㈡ C语言中怎么定义个线性表

1、定义结构体类型,这里需要利用指针和结构体,其中m和n分别表示矩阵的行和列。

㈢ C语言 线性表和链表有什么区别

线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。

顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,链表比较方便插入和删除操作。

㈣ c语言线性表

for(int *p = *(l->elem[l->length- 1]);p >= q; --p)
在for语句里,p被声明指针,但是你赋的值*(l->elem[l->length- 1])并不是指针
猜测你的意思,应该改为:
for(int *p = &(l->elem[l->length- 1]);p >= q; --p)

㈤ 关于c语言线性表

是不是b的表尾标志需要去掉,才能正确表达ab合并到一起了。比如ab是字符串的话,都有标志\n.合并成一个了当然要去掉一个表尾了。

㈥ C语言——线性表

#include"stdio.h"
#include<malloc.h>

typedef char ElemType;

typedef struct LNode
{ElemType data;
struct LNode *next;
}LinkList;

void CreatListF(LinkList *&L,ElemType a[],int n) //头插法建表
{
LinkList *s;int i;
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
for(i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
s->next=L->next;
L->next=s;
}
}

void CreateListR(LinkList *&L,ElemType a[],int n) //尾插法建表
{
LinkList *s,*r;int i;
L=(LinkList *)malloc(sizeof(LinkList));
r=L;
for(i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}

void InitList(LinkList *&L) //初始化线性表
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
}

void DestroyList(LinkList *&L) //销毁线性表
{
LinkList *p=L,*q=p->next;
while(q!=NULL)
{
free(p);
p=q;
q=p->next;
}
free(p);
}

int ListEmpty(LinkList *L) //判断线性表是否为空
{
return(L->next==NULL);
}

int ListLength(LinkList *L) //求线性表的长度
{
LinkList *p=L;int n=0;
while(p->next!=NULL)
{
n++;p=p->next;
}
return(n);
}

void DispList(LinkList *L) //输出线性表
{
LinkList *p=L->next;
while(p!=NULL)
{
printf("%c",p->data);
p=p->next;
}
}

int GetElem(LinkList *L,int i,ElemType &e) //求线性表中某个数据元素值
{
int j=0;
LinkList *p=L;
while(j<i&&p!=NULL)
{
j++;p=p->next;
}
if(p==NULL)
return 0;
else
{
e=p->data;return 1;
}
}

int LocateElem(LinkList *L,ElemType e) //按元素值查找
{
LinkList *p=L->next;
int i=1;
while(p!=NULL&&p->data!=e)
{
p=p->next;i++;
}
if(p==NULL)return(0);
else return(i);
}

int ListInsert(LinkList *&L,int i,ElemType e) //插入数据元素
{
int j=0;
LinkList *p=L,*s;
while(j<i-1&&p!=NULL)
{
j++;p=p->next;
}
if(p==NULL)return 0;
else
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=e; s->next=p->next; p->next=s;
return 1;
}
}

int ListDelete(LinkList *&L,int i,ElemType &e) //删除数据元素
{
int j=0;
LinkList *p=L,*q;
while(j<i-1&&p!=NULL)
{
j++;p=p->next;
}
if(p==NULL)
return 0;
else
{
q=p->next;
if(q==NULL)return 0;
e=q->data;
p->next=q->next;
free(q);
return 1;
}
}

int main()
{
ElemType e,a[5]={'a','b','c','d','e'};
LinkList *h;

InitList(h); //初始化顺序表h
CreateListR(h,&a[0],5); //依次采用尾插入法插入a,b,c,d,e元素
printf("单链表为:");
DispList(h); printf("\n"); //输出顺序表h

printf("该单链表的长度为:");
printf("%d",ListLength(h)); printf("\n"); //输出顺序表h的长度
if(ListEmpty(h)) printf("该单链表为空。\n");
else printf("该单链表不为空。\n"); //判断顺序表h是否为空

GetElem(h,3,e);printf("该单链表的第3个元素为:");
printf("%c",e); printf("\n"); //输出顺序表h的第3个元素
printf("该单链表中a的位置为:");
printf("%d",LocateElem(h,'a')); printf("\n"); //输出元素'a'的位置

ListInsert(h,4,'f'); //在第4个元素位置插入'f'素
printf("在第4 个元素位置上插入'f'后单链表为:");
DispList(h); printf("\n"); //输出顺序表h

ListDelete(h,3,e); //删除L的第3个元素
printf("删除第3个元素后单链表为:");
DispList(h); printf("\n"); //输出顺序表h

DestroyList(h); //释放顺序表h
return 0;
}

㈦ 怎样在C语言创建线性表

#include"stdio.h"
#include<malloc.h>

typedef char ElemType;

typedef struct LNode
{ElemType data;
struct LNode *next;
}LinkList;

void CreatListF(LinkList *&L,ElemType a[],int n) //头插法建表
{
LinkList *s;int i;
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
for(i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
s->next=L->next;
L->next=s;
}
}

void CreateListR(LinkList *&L,ElemType a[],int n) //尾插法建表
{
LinkList *s,*r;int i;
L=(LinkList *)malloc(sizeof(LinkList));
r=L;
for(i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}

void InitList(LinkList *&L) //初始化线性表
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
}

void DestroyList(LinkList *&L) //销毁线性表
{
LinkList *p=L,*q=p->next;
while(q!=NULL)
{
free(p);
p=q;
q=p->next;
}
free(p);
}

int ListEmpty(LinkList *L) //判断线性表是否为空
{
return(L->next==NULL);
}

int ListLength(LinkList *L) //求线性表的长度
{
LinkList *p=L;int n=0;
while(p->next!=NULL)
{
n++;p=p->next;
}
return(n);
}

void DispList(LinkList *L) //输出线性表
{
LinkList *p=L->next;
while(p!=NULL)
{
printf("%c",p->data);
p=p->next;
}
}

int GetElem(LinkList *L,int i,ElemType &e) //求线性表中某个数据元素值
{
int j=0;
LinkList *p=L;
while(j<i&&p!=NULL)
{
j++;p=p->next;
}
if(p==NULL)
return 0;
else
{
e=p->data;return 1;
}
}

int LocateElem(LinkList *L,ElemType e) //按元素值查找
{
LinkList *p=L->next;
int i=1;
while(p!=NULL&&p->data!=e)
{
p=p->next;i++;
}
if(p==NULL)return(0);
else return(i);
}

int ListInsert(LinkList *&L,int i,ElemType e) //插入数据元素
{
int j=0;
LinkList *p=L,*s;
while(j<i-1&&p!=NULL)
{
j++;p=p->next;
}
if(p==NULL)return 0;
else
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=e; s->next=p->next; p->next=s;
return 1;
}
}

int ListDelete(LinkList *&L,int i,ElemType &e) //删除数据元素
{
int j=0;
LinkList *p=L,*q;
while(j<i-1&&p!=NULL)
{
j++;p=p->next;
}
if(p==NULL)
return 0;
else
{
q=p->next;
if(q==NULL)return 0;
e=q->data;
p->next=q->next;
free(q);
return 1;
}
}

int main()
{
ElemType e,a[5]={'a','b','c','d','e'};
LinkList *h;

InitList(h); //初始化顺序表h
CreateListR(h,&a[0],5); //依次采用尾插入法插入a,b,c,d,e元素
printf("单链表为:");
DispList(h); printf("\n"); //输出顺序表h

printf("该单链表的长度为:");
printf("%d",ListLength(h)); printf("\n"); //输出顺序表h的长度
if(ListEmpty(h)) printf("该单链表为空。\n");
else printf("该单链表不为空。\n"); //判断顺序表h是否为空

GetElem(h,3,e);printf("该单链表的第3个元素为:");
printf("%c",e); printf("\n"); //输出顺序表h的第3个元素
printf("该单链表中a的位置为:");
printf("%d",LocateElem(h,'a')); printf("\n"); //输出元素'a'的位置

ListInsert(h,4,'f'); //在第4个元素位置插入'f'素
printf("在第4 个元素位置上插入'f'后单链表为:");
DispList(h); printf("\n"); //输出顺序表h

ListDelete(h,3,e); //删除L的第3个元素
printf("删除第3个元素后单链表为:");
DispList(h); printf("\n"); //输出顺序表h

DestroyList(h); //释放顺序表h
return 0;
}

㈧ 在C语言中线性表怎么定义

线性表有两种,不知你要求那种
typedef
struct
{
elemtype*
elem;
int
length;
int
listsize;
}
sqlist;//顺序表,这个与数组的区别不用我说了吧
void
initlist_sq
(sqlist&
l)
{
l.elem=new
elemtype
[list_init_size];
l.length=0;
l.listsize=list_init_size;
}//初始化顺序表
然后sqlist
la;
initlist_sq(la);
就可以
typedef
struct
lnode{
int
data;
struct
lnode
*next;
}lnode,*linklist;//线性链表
//单链表可以有效的利用主存的碎片,它的数据域不是连续的

㈨ C语言的线性表问题

简单调了一下,线性表从第1个元素开始存储数据。

#define MAXSIZE 10000


typedef struct {


int data[MAXSIZE];

int last;

} SeqList;


SeqList* init_SeqList()

{

SeqList *L;

L = (SeqList *)malloc(sizeof(SeqList));

if (L)

{

L->last = -1;

return L;

}

else

return 0;

}


void CreateList(SeqList& L)

{


int i;

printf("请输入你想要的顺序表的长度 ");

scanf("%d", &L.last);

printf("请输入一组整型元素,每个元素之间请用空格隔开(不超过20) ");

for (i = 1; i <= L.last; i++)

{

scanf("%d", &L.data[i]);

}

}


void TraverseList(SeqList& L)

{

int i;

printf("展示顺序表中的整形元素 ");

for (i = 1; i <= L.last; i++)

printf("%d ", L.data[i]);


printf(" ");

}



void LocateList(SeqList& L, int x)

{

int i;

int a = -1;

for (i = 1; i <= L.last; i++)

if (L.data[i] == x) {

a = i;

printf("你要查找的元素在第%d位 ", a);

}


if (a == -1) {

printf("false ");

}

}


void InsertList(SeqList& L, int i, int x)

{

int a;


if (L.last == MAXSIZE) {

printf("顺序线性表已经满了");

return;

}


if (i<1 || i>L.last) {

printf("你插入的元素不在范围内");

return;

}


if (i <= L.last)

{

for (a = L.last; a >= i; a--) {

L.data[a + 1] = L.data[a];

}

L.data[i] = x;

L.last++;

}

}


void DeleteList(SeqList& L, int i)

{

int a;


if (L.last == 0) {

printf("false");

return;

}


if (i<1 || i>L.last) {

printf("false");

return;

}


if (i <= L.last)

{

for (a = i; a < L.last; a++)

L.data[a] = L.data[a+1];

}

L.last--;

}


int main() {

SeqList L;

int x, i, choice;


printf("请输入1-5在以下菜单中选择你需要的操作(第一次选择必须选择1) ");

printf("1、建立一个顺序表 ");

printf("2、对该顺序表进行遍历 ");

printf("3、在顺序表中查找某一元素 ");

printf("4、在顺序表i位置中插入元素x ");

printf("5、在顺序表i位置中删除元素x ");


while (1)

{

printf("请选择你需要的操作: ");

scanf("%d", &choice);

switch (choice)

{

case 1:CreateList(L); break;

case 2:TraverseList(L); break;

case 3:printf("请输入你要查找的元素 ");

scanf("%d", &x);

LocateList(L, x); break;

case 4:printf("请输入你要插入的位置i ");

scanf("%d", &i);

printf("请输入你要插入的元素x ");

scanf("%d", &x);

InsertList(L, i, x);

printf("插入成功 "); break;

case 5:printf("请输入你要删除的元素的位置i ");

scanf("%d", &i);

DeleteList(L, i);

printf("删除成功 "); break;


}

}


return 0;

}

㈩ c语言中的线性表是指什么啊

线性就是数据是一维的意思而已。线性表一般分静态和动态两种,静态的就是数组,动态的就是单链表而已。