单链表删除插入逆置.docx
- 文档编号:2923893
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:22
- 大小:142.55KB
单链表删除插入逆置.docx
《单链表删除插入逆置.docx》由会员分享,可在线阅读,更多相关《单链表删除插入逆置.docx(22页珍藏版)》请在冰豆网上搜索。
单链表删除插入逆置
实验
(1)线性表操作
代码:
//test5.cpp:
Definestheentrypointfortheconsoleapplication.
//
#include"stdafx.h"
#include
#include
#defineMAXLISTSIZE1024
/*定义顺序表节点类型*/
typedefstruct
{
intdata[MAXLISTSIZE];
intlast;
}linearlist;
/*函数声明部分*/
linearlist*CreateList();
voidOutput(linearlist*);
voidAppendNode(linearlist*,int);
voidInsertNode(linearlist*,int,int);
voidReadNode(linearlist*,int);
voidSearchFromList(linearlist*,int);
voidDeleteNode(linearlist*,int);
voidUpdateNode(linearlist*,int,int);
voidListList(linearlist*);
/*主函数*/
intmain()
{
intkey,pos;
charch;
linearlist*slist;
slist=CreateList();
while
(1){
Output(slist);
printf("请选择:
");
ch=getchar();
fflush(stdin);
if(ch=='a')
{
printf("请输入要追加的数据:
");
scanf("%d",&key);
fflush(stdin);
AppendNode(slist,key);
Output(slist);
}
else
if(ch=='i')
{
printf("请输入要插入的数据的位置:
");
scanf("%d",&pos);
fflush(stdin);
printf("请输入要插入的数据:
");
scanf("%d",&key);
fflush(stdin);
InsertNode(slist,key,pos);
Output(slist);
}
else
if(ch=='d')
{
printf("请输入要删除的数据的位置:
");
scanf("%d",&pos);
fflush(stdin);
DeleteNode(slist,pos);
Output(slist);
}
else
if(ch=='r')
{
printf("请输入要读取的数据的位置:
");
scanf("%d",&pos);
fflush(stdin);
ReadNode(slist,pos);
Output(slist);
}
else
if(ch=='u')
{
printf("请输入要修改的数据的位置:
");
scanf("%d",&pos);
fflush(stdin);
printf("请输入要修改的数据:
");
scanf("%d",&key);
fflush(stdin);
UpdateNode(slist,key,pos);
Output(slist);
}
else
if(ch=='s')
{
printf("请输入要查找的数据:
");
scanf("%d",&key);
fflush(stdin);
SearchFromList(slist,key);
Output(slist);
}
else
if(ch=='e')
{
exit(0);
}
}
system("pause");
return0;
}
/*打印说明文档*/
voidOutput(linearlist*list)
{
system("cls");
printf("--------------------------------------\n");
printf("-欢迎使用线性顺序表-\n");
printf("--\n");
printf("-用法:
-\n");
printf("-a:
追加一个节点-\n");
printf("-i:
插入一个节点-\n");
printf("-d:
删除一个节点-\n");
printf("-r:
读取指定节点的值-\n");
printf("-u:
修改指定节点的值-\n");
printf("-s:
查找顺序表-\n");
printf("-e:
退出-\n");
printf("--------------------------------------\n");
ListList(list);
}
/*创建线性顺序表*/
linearlist*CreateList()
{
linearlist*slist=(linearlist*)malloc(sizeof(linearlist));
slist->last=0;
returnslist;
}
/*追加节点*/
voidAppendNode(linearlist*list,intn)
{
if(list->last { list->data[list->last]=n; list->last+=1; } else { printf("线性表已满\n"); } } /*插入节点*/ voidInsertNode(linearlist*list,intn,intpos) { intj; if(pos<1||pos>list->last+1) { printf("所插入的位置超出顺序表的范围\n"); system("pause"); } else { for(j=list->last;j>=pos-1;j--) { list->data[j+1]=list->data[j]; } list->data[pos-1]=n; list->last++; } } /*读取节点*/ voidReadNode(linearlist*list,intpos) { if(pos<0||pos>list->last) { printf("所读取的位置超出顺序表的范围\n"); } printf("位置%d中的数据是: %d\n",pos,list->data[pos-1]); system("pause"); } /*查找节点*/ voidSearchFromList(linearlist*list,intn) { inti,sign=0; for(i=0;i<=list->last;i++) { if(n==list->data[i]) { sign=1; printf("在位置[%d]处找到此数据\n",i+1); } } if(! sign) { printf("找不到此数据! \n"); } system("pause"); } /*删除节点*/ voidDeleteNode(linearlist*list,intpos) { intj; if((pos<1)||(pos>list->last+1)) { printf("所要删除的位置超出顺序表的范围\n"); system("pause"); } else { for(j=pos;j<=list->last;j++) { list->data[j-1]=list->data[j]; } list->last--; } } /*编辑节点*/ voidUpdateNode(linearlist*list,intn,intpos) { if(pos<0||pos>list->last) { printf("所读取的位置超出顺序表的范围\n"); system("pause"); } else { list->data[pos-1]=n; } } /*打印线性顺序表*/ voidListList(linearlist*list) { inti; printf("当前线性表的状态: \n"); if(list->last==0) { printf("当前顺序表为空\n"); } else { for(i=0;i<(list->last);i++) { printf("[%d]",list->data[i]); } printf("\n"); } } 运行结果: 实验二单链表逆置删除插入操作 代码如下: //test6.cpp: Definestheentrypointfortheconsoleapplication. // #include"stdafx.h" #include #include typedefstructnode { intnDate; structnode*pstnext; }Node; //链表输出 voidoutput(Node*head) { Node*p=head->pstnext; while(NULL! =p) { printf("%d",p->nDate); p=p->pstnext; } printf("\r\n"); } //链表建立 Node*creat() { Node*head=NULL,*p=NULL,*s=NULL; intDate=0,cycle=1; head=(Node*)malloc(sizeof(Node)); if(NULL==head) { printf("分配内存失败\r\n"); returnNULL; } head->pstnext=NULL; p=head; while(cycle) { printf("请输入数据且当输入数据为0时结束输入\r\n"); scanf("%d",&Date); if(0! =Date) { s=(Node*)malloc(sizeof(Node)); if(NULL=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单链表 删除 插入