c语言函数线性表 线性表c++代码

求线性表的C语言程序第一个文件commom.h
#include stdio.h
#include stdlib.h
#include malloc.h
#define OK1
#define ERROR0
#define TRUE 1
#define FALSE 0
第二个文件seqlist.h
#define ElemType int
#define MAXSIZE100/*此处的宏定义常量表示线性表可能达到的最大长度*/
typedefstruct
{
ElemTypeelem[MAXSIZE];/*线性表占用的数组空间*/
intlast;/*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值) , 空表置为-1*/
}SeqList;
第三个文件locate.cpp
#include "common.h"
#include "seqlist.h"
intLocate(SeqList L, ElemType e)
{
int i=0;/*i为扫描计数器,初值为0,即从第一个元素开始比较*/
while ((i=L.last)(L.elem[i]!=e))/*顺序扫描表,直到找到值为key的元素, 或扫描到表尾而没找到*/
i;
if(i=L.last)
return(i 1);/*若找到值为e的元素 , 则返回其序号*/
else
return(-1);/*若没找到,则返回空序号*/
}
void main()
{
SeqList l;
int p,q,r;
int i;
printf("请输入线性表的长度:");
scanf("%d",r);
l.last = r-1;
printf("请输入线性表的各元素值:\n");
for(i=0; i=l.last; i)
{
scanf("%d",l.elem[i]);
}
printf("请输入要查找的元素值:\n");
scanf("%d",q);
p=Locate(l,q);
if(p == -1)
printf("在此线性表中没有该元素!\n");
else
printf("该元素在线性表中的位置为:%d\n",p);
}
第四个文件InsList.cpp
#include "common.h"
#include "seqlist.h"
/*在顺序表L中第i个数据元素之前插入一个元素e 。插入前表长n=L-last 1,
i的合法取值范围是 1≤i≤L-last 2*/
intInsList(SeqList *L,int i,ElemType e)
{
int k;
if((i1) || (iL-last 2)) /*首先判断插入位置是否合法*/
{
printf("插入位置i值不合法");
return(ERROR);
}
if(L-last= MAXSIZE-1)
{
printf("表已满无法插入");
return(ERROR);
}
for(k=L-last;k=i-1;k--)/*为插入元素而移动位置*/
L-elem[k 1]=L-elem[k];
L-elem[i-1]=e;/*在C语言数组中,第i个元素的下标为i-1*/
L-last;
return(OK);
}
void main()
{
SeqList *l;
int p,q,r;
int i;
l=(SeqList*)malloc(sizeof(SeqList));
printf("请输入线性表的长度:");
scanf("%d",r);
l-last = r-1;
printf("请输入线性表的各元素值:\n");
for(i=0; i=l-last; i)
{
scanf("%d",l-elem[i]);
}
printf("请输入要插入的位置:\n");
scanf("%d",p);
printf("请输入要插入的元素值:\n");
scanf("%d",q);
InsList(l,p,q);
for(i=0; i=l-last; i)
{
printf("%d",l-elem[i]);
}
}
第五个文件DelList.cpp
#include "common.h"
#include "seqlist.h"
intDelList(SeqList *L,int i,ElemType *e)
/*在顺序表L中删除第i个数据元素,并用指针参数e返回其值 。i的合法取值为1≤i≤L.last 1 */
{
int k;
if((i1)||(iL-last 1))
{
printf("删除位置不合法!");
return(ERROR);
}
*e = L-elem[i-1];/* 将删除的元素存放到e所指向的变量中*/
for(k=i; i=L-last; k)
L-elem[k-1] = L-elem[k];/*将后面的元素依次前移*/
L-last--;
return(OK);
}
void main()
{
SeqList *l;
int p,r;
int *q;
int i;
l = (SeqList*)malloc(sizeof(SeqList));
q = (int*)malloc(sizeof(int));
printf("请输入线性表的长度:");
scanf("%d",r);
l-last = r-1;
printf("请输入线性表的各元素值:\n");
for(i=0; i=l-last; i)
{
scanf("%d",l-elem[i]);
}
printf("请输入要删除的元素位置:\n");
scanf("%d",p);
DelList(l,p,q);
printf("删除的元素值为:%d\n",*q);
}
第六个文件merge.cpp
#include "common.h"
#include "seqlist.h"
void merge(SeqList *LA,SeqList *LB,SeqList *LC)
{
int i,j,k;
i=0;j=0;k=0;
while(i=LA-lastj=LB-last)
if(LA-elem[i]=LB-elem[j])
{
LC-elem[k]= LA-elem[i];
i;
k;
}
else
{
LC-elem[k]=LB-elem[j];
j;
k;
}
while(i=LA-last) /*当表LA有剩余元素时 , 则将表LA余下的元素赋给表LC*/
{
LC-elem[k]= LA-elem[i];
i;
k;
}
while(j=LB-last)/*当表LB有剩余元素时,则将表LB余下的元素赋给表LC*/
{
LC-elem[k]= LB-elem[j];
j;
k;
}
LC-last=LA-last LB-last 1;
}
void main()
{
SeqList *la,*lb,*lc;
int r;
int i;
la=(SeqList*)malloc(sizeof(SeqList));
printf("请输入线性表A的长度:");
scanf("%d",r);
la-last = r-1;
printf("请输入线性表A的各元素值:\n");
for(i=0; i=la-last; i)
{
scanf("%d",la-elem[i]);
}
lb=(SeqList*)malloc(sizeof(SeqList));
printf("请输入线性表B的长度:");
scanf("%d",r);
lb-last = r-1;
printf("请输入线性表B的各元素值:\n");
for(i=0; i=lb-last; i)
{
scanf("%d",lb-elem[i]);
}
lc=(SeqList*)malloc(sizeof(SeqList));
merge(la,lb,lc);
printf("合并后线性表C中的元素为:\n");
for(i=0; i=lc-last; i)
{
printf("%d",lc-elem[i]);
}
}
包含了线性表插入,查找 , 删除,合并运算 。
怎样在C语言创建线性表?#include"stdio.h"\x0d\x0a#include\x0d\x0a \x0d\x0atypedef char ElemType;\x0d\x0a \x0d\x0atypedef struct LNode\x0d\x0a{ElemType data;\x0d\x0astruct LNode *next;\x0d\x0a}LinkList;\x0d\x0a \x0d\x0avoid CreatListF(LinkList *L,ElemType a[],int n)//头插法建表\x0d\x0a{\x0d\x0a LinkList *s;int i;\x0d\x0a L=(LinkList *)malloc(sizeof(LinkList));\x0d\x0a L-next=NULL;\x0d\x0a for(i=0;idata=https://www.04ip.com/post/a[i];/x0d/x0as-next=L-next;/x0d/x0aL-next=s;/x0d/x0a }/x0d/x0a}/x0d/x0a /x0d/x0avoid CreateListR(LinkList *L,ElemType a[],int n)//尾插法建表/x0d/x0a{/x0d/x0a LinkList *s,*r;int i;/x0d/x0a L=(LinkList *)malloc(sizeof(LinkList));/x0d/x0a r=L;/x0d/x0a for(i=0;idata=a[i];/x0d/x0ar-next=s;/x0d/x0ar=s;/x0d/x0a }/x0d/x0a r-next=NULL;/x0d/x0a}/x0d/x0a/x0d/x0avoid InitList(LinkList *L)//初始化线性表/x0d/x0a{/x0d/x0a L=(LinkList *)malloc(sizeof(LinkList));/x0d/x0a L-next=NULL;/x0d/x0a}/x0d/x0a /x0d/x0avoid DestroyList(LinkList *L)//销毁线性表/x0d/x0a{/x0d/x0a LinkList *p=L,*q=p-next;/x0d/x0a while(q!=NULL)/x0d/x0a {/x0d/x0afree(p);/x0d/x0ap=q;/x0d/x0aq=p-next;/x0d/x0a }/x0d/x0a free(p);/x0d/x0a}/x0d/x0a /x0d/x0aint ListEmpty(LinkList *L)//判断线性表是否为空/x0d/x0a{/x0d/x0a return(L-next==NULL);/x0d/x0a}/x0d/x0a /x0d/x0aint ListLength(LinkList *L)//求线性表的长度/x0d/x0a{/x0d/x0a LinkList *p=L;int n=0;/x0d/x0a while(p-next!=NULL)/x0d/x0a {/x0d/x0an;p=p-next;/x0d/x0a }/x0d/x0a return(n);/x0d/x0a}/x0d/x0a /x0d/x0avoid DispList(LinkList *L)//输出线性表/x0d/x0a{/x0d/x0a LinkList *p=L-next;/x0d/x0a while(p!=NULL)/x0d/x0a {/x0d/x0aprintf("%c",p-data);\x0d\x0ap=p-next;\x0d\x0a }\x0d\x0a}\x0d\x0a \x0d\x0aint GetElem(LinkList *L,int i,ElemType e)//求线性表中某个数据元素值\x0d\x0a{\x0d\x0a int j=0;\x0d\x0a LinkList *p=L;\x0d\x0a while(jnext;\x0d\x0a }\x0d\x0a if(p==NULL)\x0d\x0areturn 0;\x0d\x0a else\x0d\x0a {\x0d\x0ae=p-data;return 1;\x0d\x0a }\x0d\x0a}\x0d\x0a \x0d\x0aint LocateElem(LinkList *L,ElemType e)//按元素值查找\x0d\x0a{\x0d\x0a LinkList *p=L-next;\x0d\x0a int i=1;\x0d\x0a while(p!=NULLp-data!=e)\x0d\x0a {\x0d\x0ap=p-next;i;\x0d\x0a }\x0d\x0a if(p==NULL)return(0);\x0d\x0a else return(i);\x0d\x0a}\x0d\x0a \x0d\x0aint ListInsert(LinkList *L,int i,ElemType e)//插入数据元素\x0d\x0a{\x0d\x0a int j=0;\x0d\x0a LinkList *p=L,*s;\x0d\x0a while(jnext;\x0d\x0a }\x0d\x0a if(p==NULL)return 0;\x0d\x0a else\x0d\x0a {\x0d\x0as=(LinkList *)malloc(sizeof(LinkList));\x0d\x0as-data=https://www.04ip.com/post/e; s-next=p-next; p-next=s;/x0d/x0areturn 1;/x0d/x0a }/x0d/x0a}/x0d/x0a /x0d/x0aint ListDelete(LinkList *L,int i,ElemType e)//删除数据元素/x0d/x0a{/x0d/x0a int j=0;/x0d/x0a LinkList *p=L,*q;/x0d/x0a while(jnext;/x0d/x0a }/x0d/x0a if(p==NULL)/x0d/x0areturn 0;/x0d/x0a else/x0d/x0a {/x0d/x0aq=p-next;/x0d/x0aif(q==NULL)return 0;/x0d/x0ae=q-data;/x0d/x0ap-next=q-next;/x0d/x0afree(q);/x0d/x0areturn 1;/x0d/x0a }/x0d/x0a}/x0d/x0a/x0d/x0aint main()/x0d/x0a{/x0d/x0a ElemType e,a[5]={'a','b','c','d','e'};\x0d\x0a LinkList *h;\x0d\x0a \x0d\x0a InitList(h);//初始化顺序表h\x0d\x0a CreateListR(h,a[0],5);//依次采用尾插入法插入a , b , c , d,e元素\x0d\x0a printf("单链表为:"); \x0d\x0a DispList(h);printf("\n");//输出顺序表h\x0d\x0a \x0d\x0a printf("该单链表的长度为:"); \x0d\x0a printf("%d",ListLength(h)); printf("\n");//输出顺序表h的长度\x0d\x0a if(ListEmpty(h)) printf("该单链表为空 。\n");\x0d\x0a else printf("该单链表不为空 。\n");//判断顺序表h是否为空\x0d\x0a \x0d\x0a GetElem(h,3,e);printf("该单链表的第3个元素为:"); \x0d\x0a printf("%c",e); printf("\n");//输出顺序表h的第3个元素\x0d\x0a printf("该单链表中a的位置为:"); \x0d\x0a printf("%d",LocateElem(h,'a')); printf("\n");//输出元素'a'的位置\x0d\x0a \x0d\x0a ListInsert(h,4,'f');//在第4个元素位置插入'f'素\x0d\x0a printf("在第4 个元素位置上插入'f'后单链表为:"); \x0d\x0a DispList(h); printf("\n");//输出顺序表h\x0d\x0a \x0d\x0a ListDelete(h,3,e);//删除L的第3个元素\x0d\x0a printf("删除第3个元素后单链表为:");\x0d\x0a DispList(h); printf("\n");//输出顺序表h\x0d\x0a \x0d\x0a DestroyList(h);//释放顺序表h\x0d\x0a return 0;\x0d\x0a}
怎样创建线性表(C语言)?#include"stdio.h"
#includemalloc.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;in;i)
{
s=(LinkList *)malloc(sizeof(LinkList));
s-data=https://www.04ip.com/post/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;in;i)
{
s=(LinkList *)malloc(sizeof(LinkList));
s-data=https://www.04ip.com/post/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(jip!=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!=NULLp-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(ji-1p!=NULL)
{
j;p=p-next;
}
if(p==NULL)return 0;
else
{
s=(LinkList *)malloc(sizeof(LinkList));
s-data=https://www.04ip.com/post/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(ji-1p!=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语言构造线性表!#define
OK
1
#define
ERROR
-1
#define
MAX_SIZE
100
typedef
int
Status
;
typedef
int
ElemType
;
typedef
struct
sqlist
{
ElemType
Elem_array[MAX_SIZE]
;
int
length
;
}
SqList
;
以上为线性表建立的相关定义
Status
Init_SqList(
SqList
*L
)
{
L-elem_array=(
ElemType
*
)malloc(MAX_SIZE*sizeof(
ElemType
)
)
;
if
(
!L
-
elem_array
)
return
ERROR
;
else
{
L-length=
;
return
OK
;
}
}
以上为线性表初始化函数
有以上两部分可构造一个线性表
C语言实现线性表insertlist(L,m,x);这个函数参数不一致,你声明用的指针,调用的时候用的整形 。
C语言中怎么定义个线性表1、定义结构体类型,这里需要利用指针和结构体,其中m和n分别表示矩阵的行和列 。
2、为矩阵申请储存空间,注意这里使用了malloc()函数 。
3、初始化矩阵,这里将矩阵初始化为m*n的数组,且矩阵中的每一个元素的值均为0 。
4、释放存储空间 。
5、一般在定义阶段就确定数组的大?。?输入数字即为数组大小 。
6、然后,可以对数组进行初始化,在花括号{}中输入就完成了 。
【c语言函数线性表 线性表c 代码】c语言函数线性表的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于线性表c代码、c语言函数线性表的信息别忘了在本站进行查找喔 。

    推荐阅读