C语言程序设计教程答案(北邮版)杨路明 郭浩志(8)

2019-03-28 13:50

if(p==NULL)/*如果插入空表*/ { p=r; r->next=NULL; printf(\ }

else

{ while(x>p->sid) /*找到插入的位置,按学号大小。(找到位置或者到了表尾都会跳出循环)*/ { if(p->next==NULL)break; p=p->next; } if(xsid) /*插到中间位置*/ { r->sid=p->sid; r->average=p->average; p->sid=x; p->average=y; r->next=p->next; p->next=r; printf(\ } else if(x==p->sid) /*学号不能相同*/

printf(\ else /*插到末尾*/ { p->next=r; r->next=NULL; printf(\ } }

return head; }

stu *get(stu *head,int n) /*得到位置为n的结点的指针*/ { stu *p;int i; p=head->next; if(n==0) return head; else { for(i=1;inext; return p; } }

stu *delete(stu *head,int sid) { stu *p,*q;int temp=0,i=0; p=head->next; if(!p)

36

{ printf(\ press eny key back.\表空*/ else { while(p) /*查找学号为sid的结点的指针*/ {i++; /*标记学号为sid的结点的位置*/ if(p->sid==sid) {temp=1;break;} /*temp=1标记找到了*/ p=p->next; } if(temp==1) /*如果有学号为sid的结点*/ { q=get(head,i-1);/*得到sid的前一个结点的指针*/ q->next=p->next; free(p); printf(\ return head; } else /*没有找到*/ { printf(\ return head; } } }

void print(stu *head) { stu *p; p=head->next; if(!p){printf(\ press eny key back.\ while(p) { printf(\ p=p->next; } }

main() { stu *p1,*p2; char ch1; int n,i=0,j=0; head=create(); do {clrscr(); printf(\ \ printf(\ printf(\ printf(\ \

37

printf(\ \ printf(\ ............choice (1-5).............\ ch1=getch(); switch(ch1) { case '1': { clrscr(); printf(\ scanf(\ head=insert(head,i,j); printf(\ break; } case '2': { clrscr(); printf(\ \ scanf(\ p1=select(head,n); { if(p1) printf(\ else printf(\ } printf(\ break; } case '3': { clrscr();printf(\ \ scanf(\ head=delete(head,n); printf(\ break; } case '4': { clrscr(); printf(\ print(head); printf(\ break; } case '5': return; default: printf(\ press eny key back.\ }

}while(n); }

38

7、

#include #define F sizeof(L) typedef struct list { char data;

struct list *next; }L;

L *set_list()

{ L *head,*p1,*p2; char c; int n=0;

head=(L *)malloc(F); head->next=0; /*建立链表*/ p1=p2=head;

printf(\ scanf(\ while(c!='*') { n++; if(n==1) p1->data=c; else

{ p1=(L *)malloc(F); p1->data=c; p2->next = p1; p2 = p1;

p1->next = 0; }

scanf(\ }

p1=head; while(p1)

{ printf(\ \ } printf(\ return head; }

void change_list(L *head1) /*算法:p2指向最后一个元素,p1指向第一个元素。交换他们的值,p1,p2同时往中间靠拢。*/ { L *p1,*p2,*p3; int i,j,k,n=1; char temp;

p1=head1;p2=head1;p3=head1; while(p3->next)

{ p3=p3->next;n++; }/*求链长*/

for(i=n;i>(n/2);i--) /*外循环使p1后移,p2前移。*/ { p2=head1;

39

for(j=1;jnext; /*p2指向最后一个元素*/ temp=p1->data;p1->data=p2->data;p2->data=temp;/*交换他们的值*/ p1=p1->next;/*p1向后移*/ }

while(head1)

{ printf(\ \ } }

void main() { L *head; head=set_list(); change_list(head); getch(); }

第十章

1: 答: 共用体使几种不同类型的值存放在同一内存区域中。 例如, 把一个整型值和字符值放在同一个存储区域, 既能以整型存储, 又能以字符存储。共用体类型的定义形式与结构体的定义形式相同, 只是其类型关键字不同,共用体的关键字为union.一般 形式为:

union 共用体类型名 { 成员列表

};

例如: union data { int i; char ch; float f;

};

2: 答: 共用体不同与结构体,某一时刻,存与共用体的只有一种数据,而结构体是所有成分都存储着的。即共用体是几种数据值的覆盖存储,几种不同类型的数据值从同一地址开始存储,但是任一时刻只能存储其中一种数据,而不是同时存储多种数据。分配给共用体的存储区域大小至少要有存储其中最大的一种数据所需要的存储空间量。

3: 答: 在实际应用中,有的变量只有几种可能的取值。如表示颜色的名称,表示月份的名称等。为了提高程序描叙问题的直观性,ANSI C引入允许程序员定义枚举类型的机制。程序用枚举方法

40


C语言程序设计教程答案(北邮版)杨路明 郭浩志(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:论文模板

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: