(数据结构C语言版)顺序表和单链表的逆置
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1-1 顺序表的逆置操作
程序原码
#include
#include
#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
#include
#include
// 单链表的链式存储结构
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 printf("请输入第%d个结点数据: ",i+1); scanf("%d",&y); New=(PLNode )malloc(sizeof(LNode)); if(!New){ exit(-1);