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

上传人:A**** 文档编号:15363588 上传时间:2023-07-03 格式:DOCX 页数:6 大小:33.76KB
下载 相关 举报
(数据结构C语言版)顺序表和单链表的逆置.docx_第1页
第1页 / 共6页
(数据结构C语言版)顺序表和单链表的逆置.docx_第2页
第2页 / 共6页
(数据结构C语言版)顺序表和单链表的逆置.docx_第3页
第3页 / 共6页
(数据结构C语言版)顺序表和单链表的逆置.docx_第4页
第4页 / 共6页
(数据结构C语言版)顺序表和单链表的逆置.docx_第5页
第5页 / 共6页
(数据结构C语言版)顺序表和单链表的逆置.docx_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《(数据结构C语言版)顺序表和单链表的逆置.docx》由会员分享,可在线阅读,更多相关《(数据结构C语言版)顺序表和单链表的逆置.docx(6页珍藏版)》请在冰点文库上搜索。

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

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

程序原码

#include//创建顺序表,确定元素个数,插入各个元素,逆置列表。

#include

#include

#definemax_list_size100//定义给顺序表分配空间大小

typedefstruct{

int*elem;

intlength;

}list_node;//指向顺序表首地址的结构体单元

list_nodeL;//这里使用了全局变量,在所有的函数里可以随意修改其值

intlist[max_list_size];

voidinit();//初始化操作

voidinversion();//倒置部分

voidcreat();//建表部分

voiddisplay();//显示部分

//*************主函数******************

intmain()

{

init();

creat();

printf("\n您输入的顺序表的结点数:

\n");

display();

inversion();

printf("\n倒置顺序表的结点数:

\n");

display();

}

//*************初始化操作分配空间******************

voidinit()

{

L.elem=(int*)malloc(max_list_size*sizeof(int));

if(!

L.elem){

printf("顺序表已满");

exit(-1);

}

L.length=0;

}

//*************以下为建表部分******************

voidcreat(){

inta,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;

}

}

//****************以下为倒置部分**********************

voidinversion(){

inta,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;

}

}

//****************以下为显示部分**********************

voiddisplay(){

inti;

for(i=1;i<=L.length;++i)

printf("%d\t",L.elem[i-1]);

printf("\n");

}

实验1-1测试结果

输入一个正数、

输入一个负数、

实验1-2单链表的逆置操作

程序原码

//创建一个单链表,确定元素个数,插入各个元素,进行逆置操作,并输出。

#include

#include

#include

//单链表的链式存储结构

typedefstructNode

{

intdate;

structNode*next;

}LNode,*PLNode;

PLNodeCreat_Link();//创建链表

voidTreaver_Link(PLNodeHead);//输出链表

voidReaverse_Link(PLNodeHead);//逆置链表

voidmain()

{

PLNodeHead;

Head=Creat_Link();//创建链表

printf("您输入的单链表为:

\n");

Treaver_Link(Head); //输出链表

Reaverse_Link(Head); //逆置链表

printf("逆置后的的单链表为:

\n");

Treaver_Link(Head); //输出链表

}

//************以下为单链表的创建部分**************

PLNodeCreat_Link()

{

inti,t,y;

PLNodeHead=(PLNode)malloc(sizeof(LNode));

PLNodetail;

PLNodeNew;

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);

}

New->date=y;

New->next=tail->next;

tail->next=New;

tail=New;

}

returnHead;

}

//************以下为单链表的逆置部分**************

voidReaverse_Link(PLNodeHead)

{

PLNodep,q;

p=Head->next;

Head->next=NULL;

while(p){

q=p->next;

p->next=Head->next;

Head->next=p;

p=q;

}

return;

}

//************以下为单链表的显示部分**************

voidTreaver_Link(PLNodeHead)

{

PLNodep;

if(!

Head->next){

printf("链表为空退出程序!

");

exit(-1);

}

p=Head->next;

while(p){

printf("%d\t",p->date);

p=p->next;

}

printf("\n");

return;

}

实验1-2测试结果

输入一个正数、

输入一个负数、

5

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2