计算机软件技术基础上机编程
上机题一:线性表
建立单向链表;表长任意;
可交互输出单链表中得内容;
编写算法计算出自己所建单链表得长度并输出;
输出自己所建立单链表中得第K个结点,并将剩余结点输出;
将单链表倒排并输出结果
#includestdio、h
#include<malloc、h
typedefintdatatype;
typedefstructnode
{datatypedata;
structnode*next;
}linklist;
linklist*Creatlist()//建立链表//
{intx;
linklist*h,*s;
h=NULL;
printf("\npleaseinputthedateendwith0:\n);
printf(\nInputdata:);
scanf(%d,&x);
while(x!=0)
{s=malloc(sizeof(linklist));
s-data=x;
s-next=h;
h=s;
printf("\nInputdata:");
scanf(%d,x);
}
returnh;
}
voidPutlist(linklist*h)//输出单链表中得内容//
{linklist*s;
s=h;
while(s!=NULL)
{printf(%4d,s-data);
s=s->next;
}
}
intLong(linklist*h)//计算链表得长度//
{inti=0;
linklist*s;
s=h;
while(s!=NULL)
{i++;
s=s->next;
}
return(i);
}
voidDelete(linklist*h,intk)//删除链表中第k个结点//
{inti=0;
linklist*p1,*p2;
p1=h;
if(k==1){h=h-next;free(p1);}
else
{
while(ik-1&p1!=NULL)
{
i++;
p2=p1;
p1=p1-next;
}
p2->next=p1-next;
free(p1);
}
}
linklist*Nixu(linklist*h)//逆序输出链表//
{linklist*r,*q,*p;
r=h;
p=r->next;
q=p->next;
if(h==NULL)
printf("thelinklistisempty\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(\nqingshurumingling:\n);
printf(1、jianlilianbiao;\n);
printf("2、shuchulianbiaozhongdeneirong;\n");
printf(3、shuchulianbiaodechangdu;\n);
printf(4、shanchudiKgejiedian;\n);
printf(5、jianglianbiaodaoxubingshuchu;\n);
printf(6、tuichuchen