数据结构实验⼀_线性表、顺序表基本操作的编程实现(C语⾔)
⼀、实验题⽬
线性表、顺序表基本操作的编程实现
⼆、实验要求
线性表、顺序表基本操作的编程实现,掌握线性表、顺序表的建⽴、遍历、插⼊、删除、读取等基本操作的编程实现,也可以进⼀步编程实现逆序等操作,存储结构可以采⽤顺序存储结构和链表存储结构之⼀,可以依次完成主要功能来体现功能的正确性,⽤菜单进⾏管理完成⼤部分功能,要求可以重复运⾏。
三、运⾏效果图
四、程序基本功能
1、添加数据
函数名:adddata()
描述:从键盘上添加数据存⼊指针结构体中
⼊⼝参数:⽆
出⼝参数:⽆
说明:
线性表:定义两个结构体指针,在每次申请⼀个内存之后,输⼊数据,然后通过挂链表来添加数据
printf("请输⼊实际数据(空格隔开):");
for(i=0;i<adatanumber;i++)
{
newp=(struct link *)malloc(sizeof(struct link));
scanf("%d",&newp->data);
lastp->next=newp;
newp->next=NULL;
lastp=newp;
countnumber++;
}
printf("添加操作成功!\n\n");
}
顺序表:通过循环来往数组中输⼊数据
printf("请输⼊实际数据(空格隔开):");
for(i=0;i<adatanumber;i++)
{
scanf("%d",&dataarray[i]);
countnumber++;
}
printf("添加操作成功!\n\n");
数组的数据显⽰⽅式为
2、显⽰数据
函数名:showdata()
描述:顺序表和线性表均通过循环来分别输出结点和数组中的数据。
⼊⼝参数:⽆
出⼝参数:⽆
3、修改数据
函数名:moddata()
描述:线性表和顺序表均通过countnumber来到需要修改位置的地址,判断是否存在该信息,如果存在,输⼊新值直接覆盖原先的值。⼊⼝参数:⽆c语言listinsert函数
出⼝参数:⽆
4、插⼊数据
说明:
线性表:⾸先到需要插⼊的位置第n个点的地址newp
如果插⼊点为第⼀个位置:
(1)=insertp;(头结点指向插⼊点)
(2)insert->next=newp;(插⼊点指向第⼀个结点)
如果插⼊点为任意⼀个⼤于1的点:
(1)lastp为n-1个点的位置
(2)lastp->next=insertp;(第n-1个点指向插⼊点)
(3)insretp->next=newp;(插⼊点指向第n个点)
顺序表:⾸先到要插⼊第n个数据的位置,然后从第n个数据开始,把第n个数据赋值给第n+1个,即:
5、删除数据
说明:
线性表:⾸先到需要删除的第n个点的位置newp
如果删除第⼀个结点:
(1)headp->next=newp->next;(头结点指向第n+1个点)
(2)free(newp);(释放第n个结点)
如果删除第n个结点:
(1)lastp为第n-1个点
(2)lastp=newp->next;(第n-1个点指向第n+1个点)
(3)free(newp);(释放第n个点)
顺序表:⾸先到要删除那个点的地址,然后从后⾯开始依次覆盖前⼀个点
五、源码
1、线性表基本操作的编程实现
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
void showmenu(void);//菜单显⽰
void processmenu(void);//菜单控制
void adddata(void);//添加数据
void showdata(void);//显⽰数据
void moddata(void);//修改数据
void insertdata(void);//插⼊数据
void deldata(void);//删除数据
void readdata(void);//读取数据
void readlong(void);//读取长度
void readlong(void);//读取长度
void invertdata(void);//反转数据
void freelist(void);//清空链表
struct link  //定义链表结构体
{
int data;
struct link *next;
};
struct link headp;//定义头结点
int countnumber=0;//次数
int main(void)
{
system("color f0");//背景⽩⾊
while(1)
{
showmenu();
processmenu();
system("pause");
system("cls");
}
}
void showmenu(void)
{
puts("==========================="); puts("  线性表基本操作的编程实现");
puts("    操作软件:dev c++");
puts("==========================="); puts("\t1、添加");
puts("\t2、显⽰");
puts("\t3、修改");
puts("\t4、插⼊");
puts("\t5、删除");
puts("\t6、读取特定数据");
puts("\t7、统计数据个数");
puts("\t8、数据反转");
puts("\t0、退出程序");
puts("==========================="); puts("");
printf("请输⼊您的选择:");
}
void processmenu(void)
{
int menuchoice;//菜单选择
scanf("%d",&menuchoice);
switch(menuchoice)
{
case1:
adddata();//添加数据
break;
case2:
showdata();//显⽰数据
break;
case3:
moddata();//修改数据
break;
case4:
insertdata();//插⼊数据
break;
case5:
deldata();//删除数据
break;
case6:
readdata();//读取数据

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。