软基上机报告链表拓展题Word文档下载推荐.docx

上传人:b****3 文档编号:17068022 上传时间:2022-11-28 格式:DOCX 页数:23 大小:17.67KB
下载 相关 举报
软基上机报告链表拓展题Word文档下载推荐.docx_第1页
第1页 / 共23页
软基上机报告链表拓展题Word文档下载推荐.docx_第2页
第2页 / 共23页
软基上机报告链表拓展题Word文档下载推荐.docx_第3页
第3页 / 共23页
软基上机报告链表拓展题Word文档下载推荐.docx_第4页
第4页 / 共23页
软基上机报告链表拓展题Word文档下载推荐.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

软基上机报告链表拓展题Word文档下载推荐.docx

《软基上机报告链表拓展题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《软基上机报告链表拓展题Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。

软基上机报告链表拓展题Word文档下载推荐.docx

1)删除单链表中全部的负数(逐个判断是不是负数,并且返回负数所在位置,删除过春哥同实验一)

2)创建一个双向链表,按照冒泡排序的思路对这个双向链表进行排序,打印排序结果。

(从一开始逐个比较,将比第一位大的与第一位交换位置,一直比较到最后一位然后开始对于第二位重复比较)

二、程序代码

2_2

#include<

stdio.h>

malloc.h>

stdlib.h>

typedefstructNode{

intdata;

structNode*link;

}node;

typedefstructList{

node*head;

node*tail;

intlength;

}list;

voidcreat_list(list*table)

{

intx,i;

node*temp;

table->

head=NULL;

tail=NULL;

length=0;

x=1;

scanf("

%d"

&

x);

for(i=0;

x!

=0;

i++)

{

fflush(stdin);

printf("

\n"

);

temp=(node*)malloc(sizeof(node));

temp->

data=x;

link=NULL;

link=table->

head;

table->

head=temp;

length++;

}

}

node*create_node(intnew_node)

node*temp;

temp=(node*)malloc(sizeof(node));

temp->

data=new_node;

link=NULL;

returntemp;

voidget(list*table,intn)

inti,loc=table->

length+1;

node*newnode;

temp=table->

newnode=create_node(n);

for(i=2;

i<

loc;

{

temp=temp->

link;

newnode->

link=temp->

link=newnode;

voidshow_list(list*table)

printf("

链表为:

for(i=1;

i<

=table->

length;

x=temp->

data;

%d"

x);

voiddelete_node(list*table,intn)

inti;

node*temp,*t;

if(n==1)

if(n>

2&

&

n<

table->

length)

temp=table->

for(i=2;

n;

t=temp->

link=t->

if(n==table->

{for(i=2;

temp=temp->

if(n==2)

t=temp->

length--;

voidsearch(list*table,intx,inta[2])

inti=0,j=0;

=table->

if(x==temp->

data)

{a[1]=i;

j++;

}

if(j==0)

{a[0]=0;

a[1]=0;

else

a[0]=1;

voidmain()

listtable;

intm,a[2];

creat_list(&

table);

show_list(&

\n输入一个整数\n"

scanf("

m);

search(&

table,m,a);

if(a[0]==1)

delete_node(&

table,a[1]);

show_list(&

else{

get(&

table,m);

2_2(3)

inti,m=0;

if(n<

newnode->

link=temp;

temp=newnode;

else

for(i=1;

m==0;

if(i<

length&

n&

=temp->

{

m=1;

}

elseif(i==table->

{temp->

link=newnode;

m=1;

2_3

(1)

scanf("

\n链表为:

voidsearch(list*table,inta[2])

if(temp->

0)

j=1;

break;

{a[0]=1;

voidpaixu(list*table)

{inti,j,m,u;

node*temp,*t,*p;

{temp=table->

for(u=1;

u<

i;

u++)

t=temp;

for(j=i;

j<

j++)

temp=t;

for(m=i;

m<

=j;

m++)

temp=temp->

if(t->

(temp->

data))

p=temp->

temp->

t->

link=p;

table,a);

for(m=1;

a[0]==1;

search(&

2_3

(2)

structNode*link,*last;

t=(node*)malloc(sizeof(node));

t=table->

t->

last=NULL;

p=t;

t=t->

t->

last=p;

inti,j,m;

node*temp,*t,*p,*q;

if(t->

data>

p=t->

t->

link=temp->

temp->

last->

table->

head=t;

last=t->

last;

p=t;

t=temp;

/**/

t=temp;

for(j=i+1;

t=t->

link=t;

last=temp->

paixu(&

三、测试数据*

输入:

1

3

2

-4

5

-2

9

-7

输入一个整数

10

7

4

123457

6

应输出(上机前自己分析的结果):

79-25-4231

-79-25-421

-79-25-42110

1234567

59-7-43-21

5931

9531-2-4-7

四、上机时遇到的问题(可分为编译问题和逻辑问题)*

①问题现象:

冒泡排序时出现错误原因:

循环次数出现问题,少套一个循环;

解决办法:

加一个循环

②问题现象:

删除负数时删错元素原因:

对于提供的删除元素位置处理不得当;

通过调试中找到正确处理方法

五、实际运行结果:

六、小结体会*:

整体做起来比较困难,需要加强对于链表的练习。

同时,思考对于2_2,若原链表中有多个需要处理的元素如何一并处理。

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

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1