软件基础实验报告

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

软件基础实验报告

————————————————————————————————作者:————————————————————————————————日期:

计算机软件技术基础

实验报告

姓名:XXX

班级:XX 0X01

学号:30X05050XX

实验一

线性表:

1、建立单向链表,表长任意;

2、可交互输出单链表中的内容;

3、编写算法计算出自己所建单链表的长度并输出;

4、删除自己所建单链表中的第K个结点,并将剩余结点输出;

5、将单链表倒排,输出结果。

源程序如下:

#include

#include<malloc.h>

typedef int datatype;

typedefstruct node//链表结构体//

{

datatypedata;

structnode*next;

}linklist;

linklist*creatlist() //建立链表//

{

intx;

linklist*head, *s;

head=NULL;

printf("\n 输入链表数据:");

scanf("%d",&x);

while(x!=0)

{

s=malloc(sizeof(linklist)); //为链表开辟一系列的空间//s->data=x;

s->next=head;

head=s;

printf("\n输入链表数据:");

scanf("%d",&x);

}

returnhead;

}

void listContent(linklist*h)//输出链表内容//

{

linklist *s;

s=h;

while(s!=NULL)

{

printf("%4d",s->data);

s=s->next;

}

}

intlistLong(linklist*h)//计算链表长度// {

inti=0;

linklist *s;

s=h;

while(s!=NULL)

{

i++;

s=s->next;

}

return(i);

}

voidDeleteNode(linklist *h,intk)//删除第K个节点// {

int i=0;

linklist*p,*q;

p=h;

if(k==1)

h=h->next;

free(p);

}

else

while(i<k-1&&p!=NULL)

{

i++;

q=p;

p=p->next;

}

q->next=p->next;

free(p);

}

}

linklist *DaoXu(linklist *h)//逆序排列链表//

{

linklist *r,*q,*p;

r=h;

p=r->next;

q=p->next;

if(h==NULL)

printf("链表为空\n");

while(q!=NULL&&h!=NULL)

{

p->next=r;

r=p;

p=q;

q=q->next;

}

h->next=NULL;

p->next=r;

return(p);

}

main()

{

intk,x;

linklist*h;

do

{

printf("\n功能:\n");

printf("1.建立链表\n");

printf("2.输出链表内容;\n");

printf("3.获得链表长度\n");

printf("4.删除第K个节点\n");

printf("5.将链表倒序输出\n");

printf("6.退出\n");

printf("请输入功能号:\n");

scanf("%d",&x);

if(x<1||x>6)

printf("错误!\n");

else

switch(x)

{

case1:h=creatlist();break;

case2:listLong(h);break;

case 3:printf("链表的长度是:%d",listLong(h));break;

case 4:printf("请输入要删除的节点:\n");

ﻩscanf("%d",&k);

ﻩDeleteNode(h,k);

listContent(h);break;

case5:h=DaoXu(h);

listContent(h);break;

case 6:exit(0);break;

}

while(1);

}

运行结果:

实验总结:1.在编写倒排链表的程序时,对于循环的计数的控制没有搞好,以致无法得到想要的链表;2.要给一个指针创立空间之后才能调用它,否则会出错。

解决办法:1.通过单步调试程序,调整循环次数,来使循环中的个参数达到自己想要的通过查阅资料,完成对链表程序的实现。在写每一个子函数时,常常会遗漏小的判断条件,比如遗漏了判断是否为空等;还有就是在对指针操作时,有时多加了*,或者分号

相关文档
最新文档