1、(注意最终返回的为最后一个节点的地址)(2)循环链表的倒序输出next,*q=head,*head0=head; while(p!=head0) p-2链表的增序插入:(1) 单链表答案1:info * insert(info *s,info*head) info*p=head,*q=head;head) head=s; head-next=NULL;return s; else if(strcmp(s-num,head-num) return head; else p=p- if(strcmp(s-num,p- q-next=s; s-next=p; return head; q=p; q-
2、答案2:Node* Insert(Node *head, Node *s) Node *p = head, *q = NULL; /p用来遍历链表,q记住p的前续节点=NULL & strcmp(p-num, s-0) /寻找s应该插入的位置 q = p; p = p- if(q=NULL) /插在头结点前,也可以处理空链表的情况 s-next = p; return s; /插入节点next = s;(2) 循环链表 0) /作为头结点 info*search=head-next,*sea=head,*head0=head; while(search!=head0) /寻找最后一个节点 se
3、a=search; search=search- sea-=head) info* search=head- while(search! if(p=NULL)return s; /空链表 if(strcmp(p-num)=0) /插在头节点前 while(q-next != head) /q指向尾节点 q = q- /插入节点 q = p; p = p-=head &3链表复制单链表:info * copy(info * head) info * s=(info * )malloc(sizeof(info),* head2=s,* q=s,* p=head; s=(info * )malloc
4、(sizeof(info); q=s; strcpy(q-num); strcpy(q-name,p-name); head2=head2- return head2;循环链表:Node* Copy(Node *head) Node *p = head, *head2 = NULL, *q = NULL, *r = NULL; /p用来遍历原链表,head2是新链表头指针,q用来生成新链表,r记住q的前续节点 if(p=NULL)return NULL; /复制头节点 q = (Node*)malloc(sizeof(Node);name, p-num, p- head2 = q;next =
5、 head2; r = q;=head) /建立新节点并拷贝 q = (Node*)malloc(sizeof(Node); r-next = q; r = q;4结点递归计数(1)单链表int Rcounter(node * head,int m) node * p=head;p) return 0; m=1+Rcounter(p-next,m); return m;(2)循环链表int Rcounter(node * head,node * head0) int m=1; if(head=NULL) if(p-next=head0) return 1;next,head0);6 顺序存储结
6、构的排序 #include#includestdlib.hvoid directselect(int a,int n);void bubbleselect(int a,int n);int main() int a21=0,10,21,52,12,40,2,58,95,21,753,259,15,147,210,222,102,135,201,109,65; int b21,d21; for(int i=0;i0;j-) if(a0aj) break; aj+1=aj; aj+1=a0;void bubbleselect(int a,int n) /冒泡排序 int c; for(int i=
7、1; for(int j=n;i; if(ajaj-1) c=aj; aj=aj-1; aj-1=c;void bubsort(struct node *p,int n) /有序时可以返回原有序结构 struct node s;for(int i=0;n-1; int flag=0; for(int j=n-1;j-)if(*(p+j).key*(p+j-1).key) s=*(p+j); *(p+j)=*(p+j-1); *(p+j-1)=s; flag=1; if(flag=0)retrun;void selectsort(int a,int n)/选择排序,注意ai即为最小值的情况 in
8、t min,i,j,jmin; for(i=0; min=ai; int flag=0; for(j=i+1;j flag=1; min=aj; jmin=j; if(flag=1) ajmin=ai; ai=min;二维数组排序:void sort(int a5,int n) int min=a00; for(int j=0; for(int k=n-1;k=0;k-) for(int v=4;vv-) if(akv0)next = NULL; head = Insert(head, s);/Insert函数见上面的链表排序函数 else free(s);8:寻找一个以空格为间隔的字符串中中最长的单词:#include strlen(c) /这里! strcpy(c,bj); return 1;void main () static char a20,c20; puts(enter string! gets(a); str(a,c); puts(c);有关几个人中只有一人正确的问题可以用!(即非)得反一性和零实现如:1=!(count-1)+!(count-2)+!(count-3)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1