收藏 分销(赏)

(数据结构C语言版)顺序表和单链表的逆置.docx

上传人:二*** 文档编号:4540852 上传时间:2024-09-27 格式:DOCX 页数:11 大小:31KB 下载积分:5 金币
下载 相关 举报
(数据结构C语言版)顺序表和单链表的逆置.docx_第1页
第1页 / 共11页
本文档共11页,全文阅读请下载到手机保存,查看更方便
资源描述
实验1-1 顺序表的逆置操作 程序原码 #include<stdlib.h> // 创建顺序表,确定元素个数,插入各个元素,逆置列表。 #include<stdio.h> #include<malloc.h> #define max_list_size 100 //定义给顺序表分配空间大小 typedef struct{ int *elem; int length; }list_node; //指向顺序表首地址的结构体单元 list_node L; //这里使用了全局变量,在所有的函数里可以随意修改其值 int list[max_list_size]; void init(); // 初始化操作 void inversion(); // 倒置部分 void creat(); // 建表部分 void display(); // 显示部分 //*************主函数****************** int main() { init(); creat(); printf("\n您输入的顺序表的结点数: \n"); display(); inversion(); printf("\n倒置顺序表的结点数: \n"); display(); } //*************初始化操作分配空间****************** void init() { L.elem = (int *) malloc (max_list_size * sizeof(int) ); if (! L.elem) { printf("顺序表已满"); exit(-1); } L.length = 0; } //*************以下为建表部分****************** void creat(){ int a, b, i; printf("请输入顺序表的结点数: "); scanf("%d", &a); if(a<=0){ printf("顺序表个数要为正整数!请重新输入: "); scanf("%d",&a); } if( a > max_list_size - 1 || a < 0 ) { printf("分配失败,退出程序! \n"); exit(1); } for( i = 0; i != a; ++i) { printf("请输入第%d结点的值: ", i+1); scanf("%d", &b); L.elem[i] = b; ++L.length; } } //****************以下为倒置部分********************** void inversion(){ int a, b, i; a = L.length; for( i = 1; i <= a/2; i++) { b = L.elem[i-1]; L.elem[i-1] = L.elem[a-i]; L.elem[a-i] = b; } } //****************以下为显示部分********************** void display(){ int i; for( i = 1; i <= L.length; ++i) printf("%d\t", L.elem[i-1]); printf("\n"); } 实验1-1 测试结果 输入一个正数、 输入一个负数、 实验1-2 单链表的逆置操作 程序原码 //创建一个单链表,确定元素个数,插入各个元素,进行逆置操作,并输出。 #include <stdio.h> #include <malloc.h> #include <stdlib.h> // 单链表的链式存储结构 typedef struct Node { int date; struct Node *next; }LNode,*PLNode; PLNode Creat_Link(); //创建链表 void Treaver_Link(PLNode Head); //输出链表 void Reaverse_Link(PLNode Head); //逆置链表 void main() { PLNode Head; Head=Creat_Link(); //创建链表 printf("您输入的单链表为: \n"); Treaver_Link(Head); //输出链表 Reaverse_Link(Head); //逆置链表 printf("逆置后的的单链表为: \n"); Treaver_Link(Head); //输出链表 } //************以下为单链表的创建部分************** PLNode Creat_Link() { int i,t,y; PLNode Head=(PLNode )malloc(sizeof(LNode)); PLNode tail; PLNode New; if(!Head){ exit(-1); } tail=Head; Head->next=NULL; printf("请输入链表的个数: "); scanf("%d",&t); if(t<=0){ printf("链表个数要为正整数!请重新输入: "); scanf("%d",&t); } for(i=0;i<t;i++){ printf("请输入第%d个结点数据: ",i+1); scanf("%d",&y); New=(PLNode )malloc(sizeof(LNode)); if(!New){ exit(-1); } New->date=y; New->next=tail->next; tail->next=New; tail=New; } return Head; } //************以下为单链表的逆置部分************** void Reaverse_Link(PLNode Head) { PLNode p,q; p=Head->next; Head->next=NULL; while(p){ q=p->next; p->next=Head->next; Head->next=p; p=q; } return; } //************以下为单链表的显示部分************** void Treaver_Link(PLNode Head) { PLNode p; if(!Head->next){ printf("链表为空退出程序!"); exit(-1); } p=Head->next; while(p){ printf("%d\t",p->date); p=p->next; } printf("\n"); return; } 实验1-2 测试结果 输入一个正数、 输入一个负数、 10 / 11
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服