用链表或者指针数组,输入5个字符串,对字符串排序并输出
#include<stdio.h> #include<malloc.h> #include<string.h> #include<stdlib.h> #include<math.h> #include<string.h> #include <iostream> typedef struct node{ char data[100]; struct node *next; }LinkList; /*尾插法创建链表*/ void CreateR(LinkList *&L){ int i; char str[5][100]; LinkList *r,*s; L = (LinkList*)malloc(sizeof(LinkList)); r=L; for(i=0;i<5;i++){ s = (LinkList*)malloc(sizeof(LinkList)); strcpy(s->data,gets(str[i])); r->next = s; r = s; } r->next = NULL; } /*插入排序*/ void Sort(LinkList *&L){ LinkList *p=L->next->next,*pre,*s; L->next->next = NULL; while(p!=NULL){ s=p->next; p->next=NULL; pre=L; while(pre->next!=NULL&&strcmp(pre->next->data,p->data)<0){ pre=pre->next; } p->next=pre->next; pre->next=p; p=s; } } int main() { LinkList *L,*S; CreateR(L); for(S=L;S!=NULL;S=S->next){ printf("%s ",S->data); } printf("\n"); Sort(L); for(S=L;S!=NULL;S=S->next){ printf("%s ",S->data); } return 0; }
#include<stdio.h> #include<malloc.h> #include<string.h> #include<stdlib.h> #include<math.h> #include<string.h> #include <iostream> int main() { char s[5][100],*p[5],*t; int n=5,i,j,k; for(i=0;i<n;i++){ gets(s[i]); p[i]= s[i]; } for(i=0;i<n-1;i++){ k=i; for(j=i+1;j<n;j++){ if(strcmp(p[k],p[j])>0){ k=j; } } if(k!=i){ t=p[i]; p[i]=p[k]; p[k]=t; } } for(i=0;i<n;i++){ printf("%s ",p[i]); } return 0; }
#include<stdio.h> #include<malloc.h> #include<string.h> #include<stdlib.h> #include<math.h> #include<string.h> #include <iostream> int main() { char s[5][100],temp[100]; int n=5,i,j,k; for(i=0;i<n;i++){ gets(s[i]); } for(i=0;i<n-1;i++){ for(j=0;j<n-i-1;j++){ if(strcmp(s[j],s[j+1])>0){ strcpy(temp,s[j]); strcpy(s[j],s[j+1]); strcpy(s[j+1],temp); } } } for(i=0;i<n;i++){ printf("%s ",s[i]); } return 0; }