软基上机报告-链表(基础题).doc

上传人:b****2 文档编号:1709841 上传时间:2022-10-23 格式:DOC 页数:5 大小:34KB
下载 相关 举报
软基上机报告-链表(基础题).doc_第1页
第1页 / 共5页
软基上机报告-链表(基础题).doc_第2页
第2页 / 共5页
软基上机报告-链表(基础题).doc_第3页
第3页 / 共5页
软基上机报告-链表(基础题).doc_第4页
第4页 / 共5页
软基上机报告-链表(基础题).doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

软基上机报告-链表(基础题).doc

《软基上机报告-链表(基础题).doc》由会员分享,可在线阅读,更多相关《软基上机报告-链表(基础题).doc(5页珍藏版)》请在冰豆网上搜索。

软基上机报告-链表(基础题).doc

ex2_1——基本题

1)首先创建一个单链表:

从键盘读入五个整数,按输入顺序形成单链表。

将创建好的链表元素依次输出到屏幕上。

2)在已创建好的链表中插入一个元素:

从键盘读入元素值和插入位置,调用插入函数完成插入操作。

然后将链表元素依次输出到屏幕上。

3)在已创建好的链表中删除一个元素:

从键盘读入欲删除的元素位置(序号),调用删除函数完成删除操作。

然后将链表元素依次输出到屏幕上。

一、程序流程说明

1)创建一个单链表:

从键盘读入五个整数,按输入顺序形成单链表。

将创建好的链表元素依次输出到屏幕上。

2)在已创建好的链表中插入一个元素:

从键盘读入元素值和插入位置,调用插入函数完成插入操作。

然后将链表元素依次输出到屏幕上。

(让插入位前一位的指针指向新增结点,新增结点指针指向插入位置原结点,同时length加一)

3)在已创建好的链表中删除一个元素:

从键盘读入欲删除的元素位置(序号),调用删除函数完成删除操作。

然后将链表元素依次输出到屏幕上。

(让插入位置前一结点指针指向下一结点,length减一,其余不变)

二、程序代码

#include

#include

#include

typedefstructNode{

intdata;

structNode*link;

}node;

typedefstructList{

node*head;

node*tail;

intlength;

}list;

voidcreat_list(list*table)

{

intx,i;

node*temp;

table->head=NULL;

table->tail=NULL;

for(i=5;i>=1;i--)

{

printf("请输入第%d个元素:

",i);

fflush(stdin);

scanf("%d",&x);

printf("\n");

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

temp->data=x;

temp->link=NULL;

temp->link=table->head;

table->head=temp;

}

table->length=5;

}

node*create_node(intnew_node)

{

node*temp;

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

temp->data=new_node;

temp->link=NULL;

returntemp;

}

voidget(list*table)

{

intloc,x,i;

node*temp;

node*newnode;

temp=table->head;

printf("\n请输入插入位置:

");

scanf("%d",&loc);

printf("请输入插入元素:

");

scanf("%d",&x);

if(loc>table->length||loc<=0)

printf("插入出现错误\n");

else

{

table->length++;

newnode=create_node(x);

if(loc>=3&&loc<=5)

{

for(i=2;i

{

temp=temp->link;

}

newnode->link=temp->link;

temp->link=newnode;

}

if(loc==1)

{

newnode->link=table->head;

table->head=newnode;

}

if(loc==2)

{

temp=table->head;

newnode->link=temp->link;

temp->link=newnode;

}

}

}

voidshow_list(list*table)

{

intx,i;

node*temp;

printf("链表为:

\n");

temp=table->head;

for(i=1;i<=table->length;i++)

{

x=temp->data;

printf("%d",x);

temp=temp->link;

}

}

voiddelete_node(list*table)

{

intloc,i;

node*temp,*t;

temp=table->head;

printf("\n请输入删除位置");

scanf("%d",&loc);

if(loc<=0||loc>table->length)

printf("删除出错");

elsetable->length--;

if(loc==1)

{

temp=temp->link;

table->head=temp;

}

if(loc>2&&loclength)

{

temp=table->head;

for(i=2;i

temp=temp->link;

t=temp->link;

temp->link=t->link;

}

if(loc==table->length)

{ for(i=2;i

temp=temp->link;

temp->link=NULL;

}

if(loc==2)

{

temp=table->head;

t=temp->link;

temp->link=t->link;

}

}

voidmain()

{

listtable;

creat_list(&table);

show_list(&table);

get(&table);

show_list(&table);

delete_node(&table);

show_list(&table);

}

三、测试数据*

输入:

请输入第5个元素:

23

请输入第4个元素:

6

请输入第3个元素:

1

请输入第2个元素:

0

请输入第1个元素:

45

请输入插入位置:

3

请输入插入元素:

12

请输入删除位置1

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

链表为:

4501623

链表为:

450121623

链表为:

0121623

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

①问题现象:

运行超出范围原因:

i,j值选取出现问题;解决办法:

通过改变循环的值来实现正确解

②问题现象:

增加元素之后仍然只能输出五位值原因:

show_list函数输出五位,而非length位;解决办法:

改变show_list函数

五、实际运行结果:

链表为:

4501623

链表为:

450121623

链表为:

0121623

六、小结体会*:

可以改变一下让输入不只五位,同时可以考虑实现增加或删除多个元素。

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

当前位置:首页 > 高中教育 > 英语

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

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