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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验1-1 顺序表的逆置操作

程序原码

#include // 创建顺序表,确定元素个数,插入各个元素,逆置列表。#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);

相关文档
最新文档