计算机软件专业技术基础上机编程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机软件技术基础上机编程
————————————————————————————————作者:————————————————————————————————日期:
计算机软件技术基础上机编程
上机题一:线性表
1.建立单向链表;表长任意;
2.可交互输出单链表中的内容;
3.编写算法计算出自己所建单链表的长度并输出;
4.输出自己所建立单链表中的第K个结点,并将剩余结点输出;
5.将单链表倒排并输出结果
#include
#include
typedef int datatype;
typedef struct node
{ datatype data;
struct node *next;
}linklist;
linklist*Creatlist() //建立链表//
{ int x;
linklist *h, *s;
h=NULL;
printf("\n please input the date end with 0:\n");
printf("\n Input data:");
scanf("%d",&x);
while(x!=0)
{ s=malloc(sizeof(linklist));
s->data=x;
s->next=h;
h=s;
printf("\n Input data:");
scanf("%d",&x);
}
return h;
}
void Putlist(linklist *h) //输出单链表中的内容// { linklist *s;
s=h;
while(s!=NULL)
{ printf("%4d",s->data);
s=s->next;
}
}
int Long(linklist *h) //计算链表的长度// { int i=0;
linklist *s;
s=h;
while(s!=NULL)
{ i++;
s=s->next;
}
return(i);
}
void Delete(linklist *h,int k) //删除链表中第k个结点// { int i=0;
linklist *p1,*p2;
p1=h;
if(k==1) { h=h->next;free(p1);}
else
{
while(i { 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("the linklist is empty\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() { int k,x; linklist *h; do //输出菜单// { printf("\nqing shu ru ming ling:\n"); printf("1.jian li lian biao;\n"); printf("2.shu chu lian biao zhong de nei rong;\n"); printf("3.shu chu lian biao de chang du;\n"); printf("4.shan chu di K ge jie dian;\n"); printf("5.jiang lian biao dao xu bing shu chu;\n"); printf("6.tui chu cheng xu;\n"); printf("qing shu ru 1--6 de shu zi:\n"); scanf("%d",&x); if(x<1||x>6) printf("error!\n"); else switch(x) { case 1:h=Creatlist();break; case 2:Putlist(h);break; case 3:printf("lian biao de chang du shi %d",Long(h));break; case 4:printf("Input the node you want to delete:\n"); scanf("%d",&k); Delete(h,k);Putlist(h);break; case 5:h=Nixu(h);Putlist(h);break; case 6:exit(0);break; //退出程序// } } while(1); } 退出程序;