正文
c语言顺序表诸函数怎么写 顺序表的取值c语言代码
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
求用C语言写这个顺序表的主函数
完整代码:
#include stdio.h
#include stdlib.h
#include windows.h
#define MAXSIZE 100
typedef int datatype;
typedef struct{
datatype a[MAXSIZE];
int size;
}sequence_list;
void init(sequence_list *slt)
{
slt-size=0;
}
void append(sequence_list *slt,datatype x)
{
if(slt-size==MAXSIZE)
{
printf("顺序表是满的");
exit(1);
}
slt-a[slt-size]=x;
slt-size=slt-size+1;
}
void display (sequence_list slt)
{
int i;
if(!slt.size)
printf("顺序表是空的");
else
for(i=0;islt.size;i++)
printf("%5d",slt.a[i]);
printf("\n");
}
int empty (sequence_list *slt)
{
memset(slt,0,sizeof(sequence_list));
return(slt-size==0?1:0);
}
int find (sequence_list slt,datatype x)
{
int i=0;
while(islt.size slt.a[i]!=x)
i++;
return(islt.size ? i:-1);
}
datatype get(sequence_list slt,int i)
{
if(i0||i=slt.size)
{
printf("\n指定位置的节点不存在");
exit(1);
}
else
return slt.a[i];
}
void insert(sequence_list *slt,datatype x,int position)
{
int i;
if(slt-size==MAXSIZE)
{
printf("\n顺序表是满的,无法插入");
exit(1);
}
if(position0||positionslt-size)
{
printf("\n指定的插入位置不存在");
exit(1);
}
for(i=slt-size;iposition;i--)
slt-a[i]=slt-a[i-1];
slt-a[position]=x;
slt-size++;
}
void dele(sequence_list *slt,int position)
{
int i;
if(slt-size==0)
{
printf("\n顺序表是空的,无法删除");
exit(1);
}
if(position0||position=slt-size)
{
printf("\n指定的删除位置不存在");
exit(1);
}
for(i=position;islt-size-1;i++)
slt-a[i]=slt-a[i+1];
slt-size--;
}
int main()
{
sequence_list slt;
bool exit_flag=false;
int fun_num=1;
datatype data=0;
int i=0;
printf("1.初始化 2.增加节点 3.显示 4.清空 5.查找\n6.获取节点 7.插入节点 8.删除节点 9.退出 0.清屏\n");
while (!exit_flag)
{
printf("请选择功能:\n");
scanf("%d",fun_num);
switch (fun_num)
{
case 1:
init(slt);
break;
case 2:
printf("请输入数据:\n");
scanf("%d",data);
append(slt,data);
break;
case 3:
display (slt);
break;
case 4:
empty (slt);
break;
case 5:
printf("请输入查找的数据:\n");
scanf("%d",data);
printf("查找到的数据位置为:%d",find (slt,data));
printf("\n");
break;
case 6:
printf("请输入数据位置:\n");
scanf("%d",i);
printf("该位置的数据为:%d",get(slt,i));
printf("\n");
break;
case 7:
printf("请输入插入节点位置:\n");
scanf("%d",i);
printf("请输入插入节点数据:\n");
scanf("%d",data);
insert(slt,data,i);
break;
case 8:
printf("请输入删除节点位置:\n");
scanf("%d",i);
dele(slt,i);
break;
case 9:
exit_flag=true;
break;
case 0:
system("CLS");
printf("1.初始化 2.增加节点 3.显示 4.清空 5.查找\n6.获取节点 7.插入节点 8.删除节点 9.退出 0.清屏\n");
break;
default:
break;
}
}
return 0;
}
效果如下图,调试通过,所有功能好使
c语言顺序表的输入函数
建立方法很多,线性表是顺序表的顺序存储结构,这里我给你写个简单的例子参考一下,只要理解了,怎么写都不会错:具体代码如下: #include typedef struct{ int data[100]; int length; }Seqlist;//定义Seq这个新的数据类型 void creat(Seqlist L);//建立线性表 void show(Seqlist L);//显示线性表 int main() { Seqlist L; L.length=0;//初始化线性表的长度为0 creat(L); show(L); return 0; } void creat(Seqlist L) { int a; printf("请输入要创建的元素的个数:\t"); scanf("%d",a); for(int i=0;i
c语言实现顺序表?
--顺序表.h
#includestdio.h
#includestdlib.h
#includemalloc.h
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define TRUE 1
#define FLASE 0
typedef int Elemtype;
typedef int Status;
/*接口定义
Status InitList_Sq(SqList L,int size,int inc);
void CreateList_Sq(SqList L);
void print_Sq(SqList L);
int Search_Sq(SqList L, Elemtype e);
Status DestroyList_Sq(SqList L);
Status ClearList_Sq(SqList L);
Status ListEmpty_Sq(SqList L);
int ListLength_Sq(SqList L);
Status GetElem_Sq(SqList L, int i, Elemtype e);
Status PutElem_Sq(SqList L, int i, Elemtype e);
Status Append_Sq(SqList L, Elemtype e);
Status DeleteLast_Sq(SqList L, Elemtype e);
*/
--------------------
#include "顺序表.h"
//定义顺序表类型
typedef struct {
Elemtype *elem;
int length;
int listsize;
int increment;
}SqList;
//初始化顺序表
Status InitList_Sq(SqList L,int size,int inc) {
L.elem = (Elemtype *)malloc(size * sizeof(Elemtype));
L.length = 0;
L.listsize = size;
L.increment = inc;
return TRUE;
}
//创建顺序表
Status CreateList_Sq(SqList L) {
int i;
printf("请输入你要创建的顺序表元素个数:\n");
scanf_s("%d", L.length);
if (L.length = L.listsize) {
L.elem = (Elemtype *)realloc(L.elem, (L.listsize + L.increment) * sizeof(Elemtype));
}
if (!L.elem) {
return FLASE;
}
printf("请输入你要创建的顺序表:\n");
for (i = 0; iL.length; i++) {
scanf_s("%d", L.elem[i]);
}
}
//遍历顺序表
void print_Sq(SqList L) {
int i;
for (i = 0; iL.length; i++) {
printf("%4d", L.elem[i]);
}
}
//查找元素的位置
int Search_Sq(SqList L, Elemtype e) {
int i = 0;
while (L.elem[i] != eiL.length) {
i++;
}
if (iL.length)
return -1;
else
return i + 1;//因为C语言是从下标为0开始的,当i=0时表示第一个元素
}
//销毁顺序表
Status DestroyList_Sq(SqList L) {
if (L.elem == NULL)
return -1;
else
free(L.elem);
printf("\n销毁成功\n");
return TRUE;
}
//清空顺序表
Status ClearList_Sq(SqList L) {
if (L.elem == NULL)
exit(0);
int i;
Elemtype *p_elem = L.elem;
for (i = 0; iL.length; i++) {
*L.elem = NULL;
L.elem++;
}
L.elem = p_elem;
}
//判断顺序表是否为空
Status ListEmpty_Sq(SqList L) {
int i;
Elemtype* p_elem = L.elem;
for (i = 0; iL.length; i++) {
if (*L.elem != 0) {
L.elem = p_elem;
return FLASE;
}
L.elem++;
}
return TRUE;
}
//求顺序表的长度
int ListLength_Sq(SqList L) {
return L.length;
}
//用e返回顺序表L中第i个元素的值
Status GetElem_Sq(SqList L, int i, Elemtype e) {
int j;
Elemtype* p_elem = L.elem;
if (i1 || iL.length)
return FLASE;
for (j = 1; j = i; j++)
L.elem++;
e = *L.elem;
L.elem = p_elem;
return TRUE;
}
//将顺序表L中第i个元素赋值为e
Status PutElem_Sq(SqList L, int i, Elemtype e) {
L.elem[i - 1] = e;
return TRUE;
}
//在顺序表L表尾添加元素e
Status Append_Sq(SqList L, Elemtype e) {
L.elem[L.length] = e;
L.length++;
L.listsize += L.increment;
return TRUE;
}
//删除顺序表L表尾元素
Status DeleteLast_Sq(SqList L, Elemtype e) {
e = L.elem[L.length - 1];
L.length--;
return TRUE;
}
********************************************主函数.c*************************************************
#include stdio.h
#include stdlib.h
#include "顺序表.h"
#include "源代码.h"
//--------------------主函数入口--------------------
int main(){
SqList L;
int size, inc;
int e;
int a;
int length;
int i;
int temp;
int j=10;
int ee;
printf("\n--------------------顺序表初始化------------------\n");
printf("请输入顺序表的长度size以及扩容量:\n");
scanf_s("%d %d", size, inc);
InitList_Sq(L, size, inc);
CreateList_Sq(L);
printf("\n--------------------判断是否为空------------------\n");
if(ListEmpty_Sq(L)){
printf("该顺序表为空\n");
}
else
printf("该顺序表不为空\n");
printf("\n--------------------遍历顺序表--------------------\n");
printf("此时顺序表为:\n");
print_Sq(L);
printf("\n--------------------查找元素----------------------\n");
printf("\n请输入要查找的元素:\n");
scanf_s("%d",e);
a = Search_Sq(L, e);
printf("%d为第%d位:\n",e,a);
printf("\n--------------------输出长度----------------------\n");
length = ListLength_Sq(L);
printf("顺序表的长度为%d\n",length);
printf("\n----------将顺序表L中第i个元素赋值为temp----------\n");
printf("请输入第i个元素的i值和temp值:\n");
scanf_s("%d %d",i,temp);
PutElem_Sq(L, i, temp);
printf("\n此时顺序表为:\n");
print_Sq(L);
printf("\n---------------在顺序表表尾添加元素---------------\n");
Append_Sq(L, j);
printf("\n此时顺序表为:\n");
print_Sq(L);
printf("\n---------------在顺序表表尾删除元素---------------\n");
DeleteLast_Sq(L, ee);
printf("\n被删除的元素为%d\n",ee);
printf("此时顺序表为:\n");
print_Sq(L);
printf("\n-------------------清空顺序表---------------------\n");
ClearList_Sq(L);
if(ListEmpty_Sq(L)){
printf("\n清空成功\n");
}
printf("\n------------------销毁顺序表----------------------\n");
DestroyList_Sq(L);
getchar();
getchar();
return 0;
}
用C语言编写一个有关顺序表的程序代码
#include stdio.h
#include malloc.h
#define MaxSize 50
typedef char ElemType;
typedef struct
{
ElemType elem[MaxSize];
int length;
}SqList;
void InitList(SqList *L) /* 初始化顺序表 */
{
L=(SqList *)malloc(sizeof(SqList));
L-length=0;
}
void CreateListR(SqList *L,ElemType a[],int n) /*创建顺序表 */
{
int i;
for(i=0;in;i++)
L=(SqList *)malloc(sizeof(SqList));
L-elem[i]=a[i];
L-length++;
}
void DispList(SqList *L) /* 输出顺序表 */
{
int i;
if(ListEmpty(L)) return;
for(i=0;iL-length;i++)
printf("%c",L-elem[i]);
printf("\n");
}
int ListLength(SqList *L) /* 求顺序表的长度 */
{
return(L-length);
}
int ListEmpty(SqList *L) /* 求顺序表是否为空 */
{
return(L-length==0);
}
int GetElem(SqList *L,int i,ElemType e) /*求顺序表中某个数据的元素值 */
{
if(i1||iL-length)
return 0;
else
e=L-elem[i-1];
return 1;
}
int LocateElem(SqList *L,ElemType e) /*按值查找元素*/
{
int i=0;
while(iL-lengthL-elem[i]!=e) i++;
if(i=L-length)
return 0;
else
return i+1;
}
int ListInsert(SqList *L,int i,ElemType e) /*按i位置插入元素*/
{
int j;
if(i1||iL-length+1)
return 0;
i--;
for (j=L-length;ji;j--)
L-elem[j]=L-elem[j-1];
L-elem[i]=e;
L-length++;
return 1;
}
int ListDelete(SqList *L,int i,ElemType e) /*删除某个位置的元素*/
{
int j;
if (i1||iL-length)
return 0;
i--;
e=L-elem[i]; /*e中的放elem[i]有何用..以后没用到*/
for(j=i;jL-length-1;j++)
L-elem[j]=L-elem[j+1];
L-length--;
return 1;
}
void DestroyList(SqList *L) /*销毁链表*/
{
free(L);
}
void main()
{
SqList L;
ElemType a[]={'a','b','c','d'};
int c;
int e;
while(1)
{
printf("Please Choose the step you want ?\n\n");
scanf("%d",c);
if(c==0) break;
switch(c)
{
case 1: InitList(L);break;
case 2: CreateListR(L,a,4);break;
case 3: DispList(L);break;
case 4: printf("long %d", ListLength(L));break;
case 5: printf("%d",ListEmpty(L));break;
case 6: GetElem(L,3,e);break;
case 7: LocateElem(L,'a');break;
case 8: ListInsert(L,4,'f');break;
case 9: DispList(L);break;
case 10: ListDelete(L,3,e);break;
case 11: DispList(L);break;
case 12: DestroyList(L);break;
default: printf("error data");break;
}
}
}
c语言顺序表诸函数怎么写的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于顺序表的取值c语言代码、c语言顺序表诸函数怎么写的信息别忘了在本站进行查找喔。