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;//順序表的類型名