用C语言定义顺序表,分别用函数实现下列功能:
{

* 初始化顺序表;
* 插入运算:将元素x插入到顺序表中第i个元素位置(元素位置是>=1的数);
* 查找运算:在顺序表中查找与值x匹配的元素,若查找成功,则返回元素在顺序表中的位置(该元素是顺序表中的第几个元素);
* 删除运算:删除顺序表中第i个位置的元素;
}

正在学c语言数据结构的同学最好不要照搬,通过注释自己摸索写出属于自己的代码才是最重要的。

话不多说,直接上代码:
//注:orderlist(顺序表) #include<stdio.h> #include<stdlib.h>
//调用标准库头文件,用于malloc动态分配函数和清屏函数的使用 #define MAXLENGTH 999//设置顺序表的最大长度为999 typedef
int integer;//将数据类型int改名为integer(元素类型) typedef struct//将结构体类型改名为struct_orderlist
{ integer datas[MAXLENGTH];//定义顺序表最大长度 integer last;//定义顺序表的光标插入位置 }
struct_orderlist;//结构体引用名 /********************初始化顺序表******************/
struct_orderlist*initial_orderlist() { struct_orderlist *L;//定义结构体指针变量 L=(
struct_orderlist*)malloc(sizeof(struct_orderlist));
//malloc动态内存分配,向系统请求分配结构体大小字节的内存空间给指针变量 L->last=-1;//设置顺序表的长度为-1,表示顺序表为空 return
L;//返回顺序表的首地址 } /********************插入数据元素******************/ integer
insert_orderlist(struct_orderlist *L,integer x,int i)//L是顺序表的首地址,x是插入的元素,i是插入的位置
{ int j; for(j=L->last;j>=i-1;j--) { L->datas[j+1]=L->datas[j];
//将顺序表的下一个位置留空,用于下一个元素的插入 } L->datas[i]=x;//将值附给需要插入的位置 L->last++;//位置光标前移一位
return 1; } /********************删除数据元素******************/ integer
delete_orderlist(struct_orderlist *L,int i)//L是顺序表的首地址,i是插入的位置 { int j; for(j=i-
1;j<=L->last-1;j++) { L->datas[j]=L->datas[j+1];//将元素前移覆盖删除数据 } L->last--;
//光标后移一位 return 1; } /*******************输出所有数据元素******************/ void print(
struct_orderlist*L)//L是顺序表的首地址 { int j; if(-1==L->last)//用于判断顺序表有无内容 { printf(
"顺序表内无内容!"); return; } for(j=0;j<=L->last;j++)//有元素,执行下一步操作 { printf(
"第%d个元素是:%d\n",j+1,L->datas[j]); } }
/********************修改数据元素******************/ integer revise_orderlist(
struct_orderlist*L,int i,integer x)//L是顺序表的首地址,x是插入的元素,i是插入的位置 { if(i<i||i>=L->
last+2)//用于判断是否存在该元素 return 0;//无元素,返回0 L->datas[i-1]=x;//有元素,插入修改值 return 1;
//修改成功 } /********************查找数据元素******************/ integer search_orderlist
(struct_orderlist *L,int x)//L是顺序表的首地址,x是插入的元素 { int j; for(j=0;j<=L->last;j++)
{ if(x==L->datas[j])//用于判断是否查找成功 { return j+1;//返回j+1 } } return 0;//查找失败 }
/********************主函数******************/ void main() { int i,j,num,x;
struct_orderlist*L;//初始化顺序表 L=initial_orderlist();//将顺序表地址赋给L while(1) { printf(
"\t提示:系统已自动初始化顺序表\n\n"); printf("\t\t1.插入元素\n\n"); printf("\t\t2.删除元素\n\n");
printf("\t\t3.查找元素\n\n"); printf("\t\t4.输出顺序表中全部元素\n\n"); printf(
"\t\t5.修改元素\n\n"); printf("\t\t6.退出程序\n\n"); printf("请选择功能项,并按回车执行:"); scanf(
"%d",&num); switch(num) { case 1: { printf("请输入想插入的位置(*请从位置1开始顺序输入!*):\n");
scanf("%d",&i); --i; printf("请输入想插入的元素为:\n"); scanf("%d",&x); j=insert_orderlist
(L,x,i); if(0==j) { printf("插入错误!可能顺序表已满或插入位置不正确!\n"); system("pause"); system(
"cls"); break; } printf("插入成功!\n"); system("pause"); system("cls"); break; }
case 2: { printf("请输入你要删除的元素位置为:\n"); scanf("%d",&i); j=delete_orderlist(L,i);
if(0==j) { printf("删除错误!可能无该元素!\n"); system("pause"); system("cls"); break; }
printf("删除成功!\n"); system("pause"); system("cls"); break; } case 3: { printf(
"请输入你想找的元素为:\n"); scanf("%d",&x); j=search_orderlist(L,x); if(j==0) { printf(
"查找错误!可能无该元素!\n"); system("pause"); system("cls"); break; } printf("查找成功!\n");
printf("该元素是顺序表中的第%d个元素\n",j); system("pause"); system("cls"); break; } case 4:
{ print(L); system("pause"); system("cls"); break; } case 5: { printf(
"请输入你想修改的元素位置为:\n"); scanf("%d",&i); printf("该元素修改为:\n"); scanf("%d",&x); j=
revise_orderlist(L,i,x); if(0==j) { printf("修改错误!可能无该元素!\n"); system("pause");
system("cls"); break; } printf("修改成功!\n"); system("pause"); system("cls"); break
; } case 6: { system("cls"); printf("退出成功!"); return; } } } }

技术
今日推荐
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:766591547
关注微信