程序设计上机实验课后答案(8)

2019-03-16 10:18

return h; }

void insertlist(NODE *h,char *s) { NODE *p,*old,*last; char inbuf[20];

p=(NODE *)malloc(sizeof(NODE)); printf(\输入新结点值:\\n\ gets(p->name); gets(inbuf);

p->score=atof(inbuf); last=h->next;

while(strcmp(last->name,s)!=0&&last->next!=NULL) { old=last;

last=last->next; }

if(last->next!=NULL) { old->next=p; p->next=last; } else

{ last->next=p; p->next=NULL; } }

void deletelist(NODE *h,char *s) { NODE *q=h,*p=h->next;

while(strcmp(p->name,s)!=0&&p->next!=NULL) { q=p;

p=p->next; }

if(p->next!=NULL) { q->next=p->next; free(p); } else

{ printf(\无此结点!\\n按任意键返回主菜单.\\n\ getch(); } }

void printlist(NODE *h) { NODE *current=h;

while(current->next!=NULL) { current=current->next;

printf(\ } }

8. 参考答案

#include #define N 10 struct simulate

36

{

char name[10]; char number[10]; char replace[10]; char nationality[10]; int score; int grade[7]; } sim[N]; void main() {

int i,j,f; int x=0; int max,min;

struct simulate temp1; for(i=0;i

printf(\scanf(\

printf(\scanf(\

printf(\scanf(\

printf(\scanf(\for(j=0;j<7;j++) {

printf(\scanf(\} }

for(i=0;i

max=sim[i].grade[0]; min=sim[i].grade[0]; x=0;

for(j=0;j<7;j++) {

if(maxsim[i].grade[j]) min=sim[i].grade[j]; }

for(f=0;f<7;f++) x=x+sim[i].grade[f]; x=x-max-min; sim[i].score=x; }

for(i=0;i

for(j=i+1;j

37

if(sim[i].score

temp1=sim[i]; sim[i]=sim[j]; sim[j]=temp1; } }

for(i=0;i<3;i++)

printf(\

sim[i].name,sim[i].number,sim[i].replace,sim[i].nationality,sim[i].score) ; }

9. 参考答案:

#include #include struct tagPersion {

char Name[20]; /*姓名*/ char Sex; /*性别*/ char Answer; /*答案*/

struct tagPersion * Next; /*下一对象的位置*/ };

typedef struct tagPersion * LinkList; typedef struct tagPersion * LNode; typedef struct tagPersion Persion; typedef Persion Node;

int getCommand() {

int cmdID;

printf(\

printf(\录入链表\\n\ printf(\显示链表\\n\ printf(\插入结点\\n\ printf(\删除结点\\n\ printf(\退出\\n\

printf(\输入选项并按回车确认:\ scanf(\ return cmdID; }

LinkList createList(int n) {

int i; LNode p; LNode L; LNode m; if(n <= 0)

return NULL;

L = (LNode)malloc(sizeof(Node)); L->Next = NULL; p = L;

38

/*头节点*/

for(i = 1; i < n; i++) {

m = (LNode)malloc(sizeof(Node)); /*创建新节点*/ m->Next = NULL; p->Next = m; p = m; }

return L; /*函数返回头节点地址*/ }

void inputNode(LNode p) {

scanf(\}

void inputList(LinkList L) {

LNode p;

p = L; /*获得第一个节点的地址*/ while(p) {

inputNode(p);

p = p->Next; /*获得下一个节点的地址*/ } }

void displayList(LinkList L) {

LNode p;

p = L; /*获得第一个节点的地址*/ while(p) {

printf(\ p = p->Next; /*获得下一个节点的地址*/ } }

LNode insertNode(LinkList L, int i) {

LNode p = L; LNode s; int j = 0;

while(p&&j

p = p->Next; ++j; }

if(!p||j>i-1) /*如果要插入的节点小于1或大于当前链表节点个数,返回错误信息*/ {

printf(\位置小于1或大于表长。\\n\ return L; }

s = (LNode)malloc(sizeof(Node)); /*创建新节点并插入此节点*/

39

s->Next = p->Next; p->Next = s; return s; }

void deleteNode(LinkList L, int i) {

LNode p = L; LNode s; int j=0;

while(p->Next&&j

p = p->Next; ++j; }

if(!(p->Next)||j>i-1)

/*如果要删除的节点小于1或大于当前链表节点个数,返回错误信息*/ {

printf(\删除位置不合理。\\n\ return; }

s = p->Next;

p->Next = s->Next;

free(s); /*释放被删除节点所占据的存储空间*/ }

void deleteList(LinkList L) {

LNode p = L; LNode s = p; while(p) {

s = p->Next; free(p); p = s; } }

void main() {

int cmdID; /*存放代表用户选择菜单项的值*/ int where; /*存放插入或删除节点的位置*/ int count; /*存放链表节点个数*/ LinkList L=NULL; LNode p; while(1) {

cmdID = getCommand(); if(cmdID == 1) {

printf(\请输入链表初始结点数:\ scanf(\ L = createList(count);

40


程序设计上机实验课后答案(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:管理会计

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

马上注册会员

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