c语言线性数据结构
A. 数据结构(c语言版)线性表的操作
//---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int *elem;
int length;
int listsize;
}sqlist;
void initlist_sq(sqlist *L){ /*注意这里*/
L->elem=(int *)malloc(5*sizeof(sqlist)); /*注意这里*/
if(!L->elem) /*注意这里*/
exit(0);
L->length=0; /*注意这里*/
L->listsize=5; /*注意这里*/
}
int main()
{
int i;
sqlist p;
initlist_sq(&p); /*注意这里*/
for(i=0;i<5;i++)
{
printf("%d ",i);
scanf("%d",&p.elem[i]);
p.listsize++;
}
printf("%d\n",p.listsize);
for(i=0;i<5;i++)
{
printf("%d\n",p.elem[i]);
p.listsize--;
}
printf("%d",p.listsize);
}
//---------------------------------------------------------------------------
B. 求构建一个线性表的完整程序 数据结构C语言版
~~~~~~~~~~~~~~~~~~顺序表存储结构及常见操作(seqlist.c)~~~~~~~~~~~~~~~~*/
#ifndef __SEQLIST__
#define __SEQLIST__
#include stdlib.h>
/*顺序表存储空间长度的最小值*/
#define LISTMINSIZE 10
/*顺序表存储结构类型定义*/
typedef struct
{
ListDT *base;/*顺序表空间基地址*/
int listsize;/*顺序表空间尺寸*/
int len;/*顺序表长度*/
}SeqList;
/*顺序表初始化*/
void ListInitialize(SeqList *pL, int size)
{
if(sizeLISTMINSIZE)
size=LISTMINSIZE;/*限定不能小于最小尺寸*/
pL->listsize=size;
pL->base=(ListDT *)malloc(pL->listsize*sizeof(ListDT));
if(!pL->base)
exit(EXIT_FAILURE);
pL->len =0;/*初始化空表*/
}
/*按给定的下标取顺序表元素值*/
BOOL ListElem(SeqList L, int index, ListDT *pelem)
{
BOOL flg=TRUE;
if(index0 || index>L.len-1 )
flg=FALSE;/*参数越界*/
else
*pelem=L.base[index];
return flg;
}
/*求顺序表长度*/
int ListLen(SeqList L)
{
return L.len;
}
/*在顺序表中指定序号位置插入元素*/
BOOL ListInsert(SeqList *pL, int pos, ListDT d)
{
BOOL flg=TRUE;
int i;
if(pos0 || pL->len>=pL->listsize || pos>pL->len)
flg=FALSE;
else
{
for(i=pL->len-1; i>=pos; i--)/*移动数据*/
pL->base[i+1]=pL->base[i];
pL->base[pos]=d;/*写入数据*/
pL->len++;/*表长增1*/
}
return flg;
}
/*把顺序表中指定序号的元素删除*/
BOOL ListDel(SeqList *pL, int pos)
{
BOOL flg=TRUE;
int i;
if(pos0 || pos>=pL->len)
flg=FALSE;
else
{
for(i=pos+1; ipL->len; i++)/*移动数据*/
pL->base[i-1]=pL->base[i];
pL->len--;/*表长增1*/
}
return flg;
}
/*在顺序表中查找元素*/
int ListLoc(SeqList L, ListDT d,BOOL (*equal)(ListDT, Li......一年好运随春到 四季彩云滚滚来 万事如意
C. C语言数据结构,什么是非线性,什么是线性,可以举例吗
线性结构的定义是除了头结点以外只有唯一的前驱结点,除了尾结点外只有唯一的后继结点,比如数组、栈、队列都是线性结构,除此之外都是非线性结构。
列如有数据{a,b,c,d,e}
a->-b>-c>d->e这就是线性的(线性的也分连续非连续,进出顺序...)
a->b a->c b->c c->a a->d就是非线性的
D. C语言线性结构和非线性结构怎么区分啊
一、线性结构是一个有序数据元素的集合。 其中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。常用的线性结构有:线性表,栈,队列,双队列,数组,串。
2、群结构中所有的元素之间无顺序关系,最典型的群结构是集合和图。
E. 数据结构(c语言版)数据类型线性表的实现
常用的线性表的插入,删除,创建,按位置查找,按值查找,排序。专其他操作都是基属于以上基本操作实现的,你所谓的12个操作:排序有很多方法,插入类,选择类,交换类,归并类,基数排序法等,这些都是线性表的操作。
一般本科阶段教学大纲中掌握上面的内容即可。
F. c语言中的线性数据结构是指什么
基本的数据结构分为4类:集合,线性结构,树形结构,图形结构。
数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。
典型的数据结构有队列,栈,线性表等
G. ★ c语言中的线性数据结构是指什么
线性结构和非线性结构是数据的逻辑结构,属于《数据结构》课程的基本概念,
1.线性结构是n个数据元素的有序(次序)集合,指的是数据元素之间存在着“一对一”的线性关系的数据结构。
如(a1,a2,a3,.....,an),a1为第一个元素,an为最后一个元素,此集合极为一个线性结构的集合。 它有四个基本特征
a.集合中必存在唯一的一个"第一个元素";
b.集合中必存在唯一的一个"最后的元素";
C.除最后元素之外,其它数据元素均有唯一的"后继";
d.除第一元素之外,其它数据元素均有唯一的"前驱"。
常用的线性结构有:线性表,栈,队列,双队列,数组,串。
2、非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个后驱。
常见的非线性结构有:树(二叉树等),图(网等),广义表。
根据以上定义,你的选择题答案为B。
A违反了线性特征的第一条,有两个根节点,一定是非线性
C D都是线性结构!
H. 数据结构(C语言描述) 线性表实验
#include<stdio.h>
#include<malloc.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct{
int * elem;
int length;
int listsize;
}SqList;
//SqList sq;
void InitList_Sq(SqList *sq) //初始化列表
{
sq->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
sq->length=0;
sq->listsize=LIST_INIT_SIZE;
printf("---申请空间成功---!\n");
}
void GetElem(SqList *sq,int i)//获取第i位置元素的值
{
int *p;
p=&(sq->elem[i-1]);
printf("%d",*p);
printf("\n");
}
int ListInsert_Sq(SqList *sq,int i,int a)//在i位置之前插入a
{
int *p,*q;
if(i<=0||i>sq->length+1)
{
printf("---位置不合法---!\n");
return 0;
}
if(sq->length>=sq->listsize)
{
int* newbase=(int *)realloc(sq->elem,(sq->listsize+LISTINCREMENT)*sizeof(int));
if(!newbase)
{
printf("申请空间溢出\n");
return 0;
}
sq->elem=newbase;
sq->listsize+=LISTINCREMENT;
}
p=&(sq->elem[i-1]);//p指向第i位置的元素
q=&(sq->elem[sq->length-1]);//q指向最后一个元素
for(;q>=p;--q) *(q+1)=*q;
*p=a;
++sq->length;
return 1;
}
int ListDelete_Sq(SqList *sq,int i) //删除i位置上的值
{
int *p,*q;
if(i<1||i>sq->length) return 0;
p=&(sq->elem[i-1]);//p指向第i位置的元素
q=sq->elem+sq->length-1;//q指向最后一个元素
for(++p;p<=q;++p)
{
*(p-1)=*p;
}
--sq->length;
return 1;
}
void visit(SqList *sq)//输出数据
{
int i=1;
for(;i<=sq->length;i++)
{
int *p;
p=&sq->elem[i-1];
printf("%d",*p);
printf(" ");
}
}
void main()
{
int i=1,a=0,boo=1,number=0;
SqList s,*sq;
sq=&s;
InitList_Sq(sq);
printf("初始化空表\n");
printf("输入数据个数:\n");
scanf("%d",&number);
printf("输入%d个数据:",number);
printf("\n");
for(;i<=number;i++)
{
scanf("%d",&a);
if(boo=ListInsert_Sq(sq,i,a))
{
printf("---插入成功!---\n");
}
else
{
printf("---插入不成功,重新插入---!\n");
i=i-1;
}
}
printf("输出所有元素\n");
visit(sq);
printf("\n");
printf("输出删除的位置:");
scanf("%d",&a);
if(boo=ListDelete_Sq(sq,a))
{
printf("---数据删除成功!---\n");
}else
{
printf("---没有删除成功---\n");
}
printf("输出所有元素:\n");
visit(sq);
printf("\n");
printf("输出要显示数据的位置:");
scanf("%d",&a);
printf("输出%d位置数值\n",a);
if(a<0||a>sq->length)
{
printf("---输出位置的数据不存在---\n");
}
else
{
GetElem(sq,a);
}
}
以上是可直接运行的源程序
运行结果:
---申请空间成功---!
初始化空表
输入数据个数:
3
输入1个数据:3
---插入成功!---
输入2个数据;8
---插入成功!---
输入3个数据:5
---插入成功!---
输出所有元素:3 5 8
输出删除的位置:2
---数据删除成功!---
输出所有元素;3 8
输出要显示数据的位置:2
"输出2位置数值:8
I. C语言中,数据结构存储结构属于线性还是非线性
这个不能一概而论
通常所说的数组是线性存储的,还有数据结构书中说的线性表,
链表通常是非线性的
其他的数据结构数据结构存储结构包括顺序存储结构和链式存储结构;
顺序结构:数据元素存放的地址是连续的-----线性的存储;
链式结构:数据元素存放的地址是否连续没有要求----非线性的存储
J. 数据结构 线性表 用c语言
#define
MAXSIZE
100
//表中元素的最大个数
typedef
int
ElemType;//元素类型
typedef
struct
list{
ElemType
elem[MAXSIZE];//静态线性表
int
length;
//表的实际长度
}SqList;//顺序表的类型名