question: student_link
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                question: student_link
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                現有男女學生鏈表(鏈表結點中有名字和年齡兩個元素):①將 男學生鏈表 和 女學生鏈表按年齡從小到大合并,②將合并后的鏈表逆序排列,③通過年齡能搜索到該年齡的學生的姓名。
#include #include #include #include #define MAX_SIZE 20 struct student {int age;char name[MAX_SIZE];struct student* next; };typedef struct student Stu; typedef Stu* Link;void init(Link* head) {*head = (Link)malloc(sizeof(Stu));(*head)->next = *head; } void insert_tail_node(Link head,Link newnode) {Link temp = head;while(temp->next != head){temp = temp->next;}temp->next = newnode;newnode->next = head; }void display(Link head) {Link temp = head->next;while(temp != head){printf("%d %s ",temp->age,temp->name);temp = temp->next;} }int sort_insert(Link head,Link newnode) { Link temp = head;Link front = temp;temp = temp->next;while(temp != head){if(temp->age >= newnode->age){newnode->next = front->next;front->next = newnode;return 0;}front = temp;temp = temp->next;}newnode->next = front->next;front->next = newnode;return 0; }Link combine_link(Link head1,Link head2) {Link head;Link temp1 = head1->next;Link temp2 = head2->next;Link newnode = NULL;init(&head);while(temp1 != head1){newnode = (Link)malloc(sizeof(Stu));newnode->age = temp1->age;strcpy(newnode->name,temp1->name);sort_insert(head,newnode);temp1 = temp1->next;}while(temp2 != head2){newnode = (Link)malloc(sizeof(Stu));newnode->age = temp2->age;strcpy(newnode->name,temp2->name);sort_insert(head,newnode);temp2 = temp2->next;}return head; } int reverse_link(Link* head) {if((*head)->next == NULL || (*head)->next->next == NULL){return 0;}else{Link p = *head;Link s = p->next;Link t = s->next;while(t != *head){s->next = p;p = s;s = t;t = t->next;}s->next = p;(*head)->next = s;return 0;} } int search(Link head,int age) {Link temp = head;Link front = temp;temp = temp->next;int flag = 0;while(temp != head){if(temp->age == age){printf("%s\n",temp->name);flag = 1;}temp = temp->next;}if(flag == 1){return 0;}else{temp = head;front = temp;temp = temp->next;while(temp != head){if(age > temp->age){if(fabs(front->age - age) > fabs(temp->age - age)){printf("%s\n",temp->name);return 0;}else if(fabs(front->age - age) < fabs(temp->age - age)){printf("%s\n",front->name);return 0;}else{printf("%s\n",front->name);printf("%s\n",temp->name);return 0;}}front = temp;temp = temp->next;}} return 0; } int main() {Link b_head;Link g_head;Link head;Link newnode;init(&b_head);init(&g_head);init(&head);Stu boy[3] = {{11,"caozeren"},{10,"shenyuhui"},{12,"wangrenze"}};Stu girl[3] = {{19,"zhenchen"},{18,"xuweijuan"},{20,"zhuhuiyu"}};int i = 0;for(i = 0; i < 3; i++){newnode = &boy[i];insert_tail_node(b_head,newnode);}for(i = 0; i < 3; i++){newnode = &girl[i];insert_tail_node(g_head,newnode);}display(b_head);printf("\n");display(g_head);printf("\n");head = combine_link(b_head,g_head);display(head);printf("\n");reverse_link(&head);display(head);search(head,17);return 0; }
總結
以上是生活随笔為你收集整理的question: student_link的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: SPI通信总线-51
 - 下一篇: 管程的特点