西电机电院软件技术基础大作业Word格式文档下载.docx

上传人:b****6 文档编号:18824085 上传时间:2023-01-01 格式:DOCX 页数:21 大小:137.14KB
下载 相关 举报
西电机电院软件技术基础大作业Word格式文档下载.docx_第1页
第1页 / 共21页
西电机电院软件技术基础大作业Word格式文档下载.docx_第2页
第2页 / 共21页
西电机电院软件技术基础大作业Word格式文档下载.docx_第3页
第3页 / 共21页
西电机电院软件技术基础大作业Word格式文档下载.docx_第4页
第4页 / 共21页
西电机电院软件技术基础大作业Word格式文档下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

西电机电院软件技术基础大作业Word格式文档下载.docx

《西电机电院软件技术基础大作业Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《西电机电院软件技术基础大作业Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。

西电机电院软件技术基础大作业Word格式文档下载.docx

若数据域是英文字母或是其它字符,则将其从原来的链表中删除,并把它分别插入到其它两个链表中。

4.建立一个循环链表,链表的数据域为商品的价格和数量,最后插入(4000,10)节点。

从前到后遍历这个链表,若链表中存在一个节点,其数据域的价格为4000,则数量再加上10即可,若不存在,按照链表的顺序将该节点插入。

5.建立一个顺序表,从键盘上输入字符串,从第一个节点和最后一个节点依次向中间比较。

若发现不同。

则比较结束,该字符串不是回文,否则,是回文。

6.叶子节点的左右孩子节点的数据域均为0.用先序遍历的方法遍历该链表,每遍历到一个节点,就将节点数加1,若节点的左右孩子节点的数据域为0,则叶子节点数加1.

四、调试分析

1.在调试过程中,要充分考虑到各种可能出现的情况。

比如说,当有多个最小值时,需要依次与其后的节点进行操作;

再如,到最小值在最后一个节点时,就不能进行任何处理了。

时间复杂度:

O(n)。

2.好像没有遇到什么问题。

3.此处要注意结束条件,否则可能没法正常退出。

4.本题需要注意,链表中是否有数据域为4000的节点,有的话就不用再新建了。

5.本题好像也没有遇到什么问题。

6.本题要注意,叶子节点的定义。

否则,程序无法判断节点是否为叶子节点。

五、测试结果

1.

2.

3.

4.

5.

6.

六、源程序:

#include<

stdio.h>

stdlib.h>

typedefintdatatype;

typedefstructnode

{

datatypedata;

structnode*next;

}linklist;

linklist*head,*p;

linklist*creatlistr1();

/*尾插法*/

voidDelete(linklist*p,linklist*head);

linklist*locate(linklist*head,datatypekey);

voidoutput(linklist*p);

intmain()

intMin;

linklist*pMin=(linklist*)malloc(sizeof(linklist));

printf("

请输入单链表,并以-1结束:

\n"

);

head=creatlistr1();

Min=head->

next->

data;

p=head->

next;

while(p!

=NULL)

{

if(Min>

p->

data)

{

Min=p->

pMin=p;

}

p=p->

}

最小值为:

%d\n"

Min);

p=head;

while((p=locate(p,Min))!

if(p->

next!

if(Min%2)

{

(p->

data)^=(p->

data)^=p->

}

else

Delete(p->

next,head);

}

变更后的链表为:

"

output(head);

return0;

}

linklist*creatlistr1()/*尾插法*/

intch;

linklist*head,*s,*r;

head=(linklist*)malloc(sizeof(linklist));

r=head;

scanf("

%d"

&

ch);

while(ch!

=-1)

s=(linklist*)malloc(sizeof(linklist));

s->

data=ch;

r->

next=s;

r=s;

scanf("

r->

next=NULL;

returnhead;

voidoutput(linklist*ll)

linklist*p;

for(p=ll->

p!

=NULL;

p=p->

next)

printf("

%d"

p->

data);

voidDelete(linklist*p,linklist*head)

linklist*q=head;

while(q->

=p)

q=q->

q->

next=p->

free(p);

linklist*locate(linklist*head,datatypekey)

linklist*p=head->

while(p!

data!

=key)

p=p->

elsebreak;

returnp;

linklist*head;

linklist*reverse1(linklist*head);

inti;

head=(linklist*)malloc(sizeof(linklist));

linklist*s,*r;

for(i=0;

i<

10;

i++)

s=(linklist*)malloc(sizeof(linklist));

data=i+1;

reverse1(head);

voidinsertafter(linklist*p,datatypex)

linklist*s;

s=(linklist*)malloc(sizeof(linklist));

s->

data=x;

p->

linklist*reverse1(linklist*head)

linklist*p,*q;

while(p->

q=p->

p->

next=q->

q->

next=head->

head->

next=q;

ctype.h>

linklist*head,*head2,*head3,*p,*p2,*p3;

linklist*Delete(linklist*p,linklist*head);

请输入链表,并以'

$'

结束:

head2=(linklist*)malloc(sizeof(linklist));

head2->

head3=(linklist*)malloc(sizeof(linklist));

head3->

p2=head2;

p3=head3;

if(isdigit(p->

data))

continue;

if(isalpha(p->

p2->

next=Delete(p,head);

p2=p2->

p3->

p3=p3->

output(head2);

output(head3);

charch;

ch=getchar();

='

ch=getchar();

%c"

linklist*Delete(linklist*p,linklist*head)

datatypeprice;

datatypemount;

voidinsert(linklist*head,datatypeprice,datatypemount);

voidoutput(linklist*head);

请按价格从高到低的次序依次输入电视机的价格和数量,格式:

“价格数量”,两组数据之间用空格分开,最后以“00”结束:

insert(head,4000,10);

%d%d"

price,&

mount);

while(!

(price==0&

&

mount==0))

price=price;

mount=mount;

next=head;

=head;

%d%d\n"

price,p->

voidinsert(linklist*head,datatypeprice,datatypemount)

linklist*s,*p=head->

next,*q=head;

s=(linklist*)malloc(sizeof(linklist));

=head,p->

price>

4000)

if(p->

price==4000)

mount+=10;

}

else

string.h>

#defineMaxnum1024

charstr[Maxnum]={0};

inti,j,flag=1;

%s"

str);

j=strlen(str)-1;

j;

i++,j--)

if(str[i]!

=str[j])

flag=0;

break;

if(flag)

是回文\n"

不是回文\n"

6.

typedefstructNode

structNode*lchild,*rchild;

}Node,*pNode;

intCreateTree(pNode&

T)

datatypee;

e);

if(e==0)T=NULL;

else

T=(pNode)malloc(sizeof(Node));

if(!

exit(-2);

T->

data=e;

CreateTree(T->

lchild);

rchild);

return1;

intCountNode(pNodeT)

intm=0,n=0;

if(T==NULL)

return0;

m=CountNode(T->

n=CountNode(T->

return(m+n+1);

voidleafcount(pNodep,int*count)

if(p==NULL)return;

if(p->

lchild==NULL&

rchild==NULL)

(*count)++;

return;

leafcount(p->

lchild,count);

rchild,count);

pNodeT;

intres=0;

请用前序遍历的顺序建立二叉树,叶子节点的左右子树以0结束:

CreateTree(T);

节点数为:

CountNode(T));

leafcount(T,&

res);

叶子节点数目为:

res);

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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