网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

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语言数据结构顺序表选择排序怎么在主函数中调用,谢谢!

SeqList L;//L只是个默认构造,在后面执行基本是统一的0值;执行前应该设置实体数据

L=Selection(L.length);//改为L=Selection(L);原函数调用与函数定义不符,有语法错误;L.length是个int 类型,函数定义的参数类型是SeqList;

SeqList Selection(SeqList L) 内部逻辑不够简捷,多多练习;

if (L.data[j]L.data [i]){}//可直接交换,k标志没什么作用。

C语言顺序表的删除操作,后面主函数的调用老是错!

再次修改完成,调试通过。

#include malloc.h

#include stdio.h

#define LIST_INIT_SIZE 100

#define LISTINCREMENT 10

typedef struct{

int *elem;

int length;

int listsize;

}Sqlist;

///////

Sqlist* InitSqlist() //链表初始化

{

Sqlist * L=NULL;

L=(Sqlist*)malloc(sizeof(Sqlist));//L只是个指针,要指向一个Sqlist.

L-elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));

L-length=0;

L-listsize=LIST_INIT_SIZE;

return L;

}

////

void DisplaySqlist(Sqlist* L2)

{

int i;

for(i=0;iL2-length;i++)//去掉-1,

{

printf("%d ",L2-elem[i]);

}

}

////////

Sqlist* List_Insert_Sq(Sqlist* L3,int i,int e)//链表的插入

{

int * newbase,*p,*q;

if(i1||iL3-length+1)return L3;

if(L3-length=L3-listsize)

{

newbase=(int*)realloc(L3-elem,(L3-listsize+LISTINCREMENT)*sizeof(int));

if(!L3-elem) return L3;

L3-elem=newbase;

L3-listsize+=LISTINCREMENT;

}

q=(L3-elem[i-1]);

for(p=(L3-elem[L3-length-1]);p=q;--p) *(p+1)=*p; //这里有问题,已经改正

*q=e;

++L3-length;

return L3;

}

////

Sqlist* List_Delete_Sq(Sqlist* L4,int i)

{

int *p,*q;

q=(L4-elem[i-1]);

for(p=q;L4-length-i;p++,i++) *p=*(p+1); //这里有问题,已经按我想法改了。因为这是个数组链表。用后一个数覆盖前一个数完成节点的删除。

--L4-length;

return L4;

}

///

void main()

{

Sqlist* L1;

Sqlist* i,e;

L1=InitSqlist();

L1=List_Insert_Sq(L1,1,1);

L1=List_Insert_Sq(L1,2,3);

L1=List_Insert_Sq(L1,3,5);

L1=List_Insert_Sq(L1,2,7);

L1=List_Delete_Sq(L1,2);

DisplaySqlist(L1);

}


当前名称:c语言顺序表主函数,c语言顺序表的基本操作
URL分享:http://bjjierui.cn/article/dscidsc.html

其他资讯