计算机软件技术基础上机编程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

}

退出程序;

相关文档
最新文档