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
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(max 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 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 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库程序设计上机实验课后答案(8)在线全文阅读。
相关推荐: