计算机软件技术基础上机编程 下载本文

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

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

上机题一:线性表

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(\ printf(\ scanf(\ while(x!=0)

{ s=malloc(sizeof(linklist)); s->data=x; s->next=h; h=s;

printf(\ scanf(\ }

return h; }

void Putlist(linklist *h) //输出单链表中的内容// { linklist *s; s=h;

2

while(s!=NULL)

{ printf(\ 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) { int i=0;

linklist *p1,*p2; p1=h;

if(k==1) { h=h->next;free(p1);} else {

while(i

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(\

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); }

//删除链表中第k个结点// //逆序输出链表// / /空表// //返回根结点// 3