1、TP;typedef struct students char sid15; char name15; TP score; struct students *next;student *input() student *head,*p1,*p2; int n=0; char ch; clrscr(); head=(student *)malloc(F);head-next=NULL; do n+;nnPlease input %d student message: nn,n);t%d student sid: p1=(student *)malloc(F);p1-,p1-sid);nt%d s
2、tudent name:name); nt%d student scores(englesh,math,c_language):%d,%d,%dscore.english,&score.math,&score.c_language); p1-score.all=p1-score.english+p1-score.math+p1-score.c_language; if(n=1) head-next=p1;p2=p1; else p2- p2=p1;nntttContinue or back (press y/n): ch=getch(); while(ch=y|ch=Y return head
3、;void average1(student *head) student *p; int j; p=head-next; while(p) j=p-score.all/3; printf(nnname: %staverage: %d,p-name,j); p=p-nnnPress eny key return.void average2(student *head) student *p;int n=0,temp1=0,temp2=0,temp3=0; temp1+=p-score.english; temp2+=p-score.math; temp3+=p-n+;nnaverage eng
4、lish is : %dnaverage math is : %dnaverage c_language is : %dt,temp1/n,temp2/n,temp3/n);student *sort(student *head) student *head1,*p,*q,*r; int temp1=0,temp2=0,temp3=0,temp4; char s15,n15; head1=head; for(p=head1-p-next!=NULL;p=p-next) r=p; for(q=p-q;q=q- if(q-score.allr-score.all) r=q; if(r!=p) st
5、rcpy(s,p-strcpy(n,p- temp1=p- temp2=p- temp3=p- temp4=p-score.all; strcpy(p-sid,r-strcpy(p-name,r- p-score.english=r-score.math=r-score.c_language=r-score.all=r- strcpy(r-sid,s);strcpy(r-name,n); r-score.english=temp1;score.math=temp2;score.c_language=temp3;score.all=temp4; return head1;void output(
6、student *head) student *head2,*p;int i=1; head2=sort(head); for(p=head2-p! %stsid: %stenglish: %dtmath: %dtc_language: %dtaverage: %dtmingci:name,p-sid,p-score.english,p-score.math,p-score.c_language,p-score.all/3,i+); average2(head);nnnttPress eny key back. int i=0,j=1; head=input(); clrscr();nn(1)
7、: average1.nn(2): average2.nn(3): sort.nn(4): output.nnn Please choose: scanf(%di); switch(i) case 1: average1(head); break; case 2:average2(head);nnnPress eny key retuen.getch(); case 3:p1=sort(head); for(p2=p1-p2!p2=p2-next) printf(nttname: %stmingci:,p2-name,j+);printf(nnnPress eny key back. case
8、 4: output(head); default:nYour choose is not right.break; while(i!=-1);4、#define F sizeof(worker)typedef struct work int money; struct work *next;worker;int min=0,max=0;char a15,b15;worker *input() worker *head,*p,*q;int n=0; head=(worker *)malloc(F); head-next=0; p=(worker *)malloc(F); p-nntPlease
9、 input %d worker message :n%d worker sid:scanf(n%d worker name:n%d worker money:money); if(n=1) head-next=p; q=p; max=p-money;strcpy(a,p- min=p-strcpy(b,p- else q- if(p-moneymax) max=p-money q=p;ntty/nch=getch();void output() clrscr();nThe max money is: %dttname is: %snn,max,a);nThe min money is: %s
10、,min,b); input(); output();5、6、#includestdio.h#define F sizeof(stu)typedef struct student int sid; int average; struct student *next;stu;stu *head;stu *create() stu *p1,*p2; head=(stu *)malloc(F); p1=(stu *)malloc(F);nt%d student average:average);stu *select(stu *head,int x) stu *s; s=head- while(s)
11、 if(s-sid=x) s=s- return s;stu *insert(stu *head,int x,int y) stu *p,*r,*q; r=(stu *)malloc(sizeof(stu); r-sid=x;average=y; if(p=NULL)/*如果插入空表*/ p=r;ninsert success! while(xsid) /*找到插入的位置,按学号大小。(找到位置或者到了表尾都会跳出循环)*/ if(p-next=NULL)break; p=p- if(xsid=p-sid;average=p-average;next=p-next=r; else if(x=p
12、-sid) /*学号不能相同*/nError-your input this same sid. else /*插到末尾*/ p-stu *get(stu *head,int n) /*得到位置为n的结点的指针*/ stu *p;int i; if(n=0) return head; else for(i=1;i free(p); printf(nndelete sucess ! return head; else /*没有找到*/ printf(nnNO this data.nvoid print(stu *head) stu *p;p)printf(n%d :t%d main() stu
13、*p1,*p2; char ch1; int n,i=0,j=0; head=create(); clrscr();n1. insert. n2. select.n3. delect.n4. print list. n5. EXIT n .choice (1-5). ch1=getch(); switch(ch1) case 1: clrscr();nplease input insert sid. and average(like 1,1):%d,%di,&j); head=insert(head,i,j); break;2ninput you want to selete sid:n);
14、p1=select(head,n); if(p1) printf(nsid:%dtaverage:sid,p1- else printf(nNo this data.3nPlease input you want delete sid: head=delete(head,n);4All information : print(head);5 return; default:nnYour enter is not right. press eny key back. while(n); 7、#define F sizeof(L)typedef struct list char data; str
15、uct list *next;L;L *set_list() L *head,*p1,*p2; char c; head=(L *)malloc(F); /*建立链表*/ p1=p2=head;nPlease input char(press * finish):%cc); while(c!=*)data=c; p1=(L *)malloc(F); p2-next = p1; p2 = p1;next = 0; p1=head; while(p1)%c data);p1=p1-nnnvoid change_list(L *head1) /*算法:p2指向最后一个元素,p1指向第一个元素。交换他
16、们的值,p1,p2同时往中间靠拢。*/ L *p1,*p2,*p3; int i,j,k,n=1; char temp; p1=head1;p2=head1;p3=head1; while(p3- p3=p3- /*求链长*/ for(i=n;i(n/2);i-) /*外循环使p1后移,p2前移。 p2=head1; for(j=1;j /*p2指向最后一个元素*/ temp=p1-data;data=p2-p2-data=temp;/*交换他们的值*/ p1=p1-/*p1向后移*/ while(head1),head1- head1=head1- L *head; head=set_list(); change_list(head);她含着笑,切着冰屑悉索的萝卜,她含着笑,用手掏着猪吃的麦糟,她含着笑,扇着