本文主要是介绍按从大到小顺序创建单链表简易写法及改进,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
按从大到小顺序创建单链表简易写法
Node *head;head=(Node *)malloc(sizeof(Node));head->next=NULL;Node *a,*b;a=b=head;q->next=NULL;if(head->next==NULL){head->next=q;}else{a=head;b=head->next;while(FG(q)<FG(b)&&b!=NULL) {a=a->next;b=b->next;}a->next=q;q->next=b; //无论是因为b为null停止循环还是找到比q的数值小的结点停止循环,都是这种写法}
改进算法,发现那个if可以直接合并到else的情况中
Node *CreatLinkList(int n)
{Node *head;head=(Node *)malloc(sizeof(Node));head->next=NULL;while(n--){Node *q;Node *a,*b; //双指针,a在前,b在后q=(Node *)malloc(sizeof(Node));scanf("%d",&q->stunum);scanf("%s",q->name);scanf("%d",&q->phnum);q->next=NULL;a=head;b=head->next; //即使b为null,也能正常创建while(b!=NULL&&b->stunum<q->stunum){a=a->next;b=b->next;}a->next=q;q->next=b;}return head;
}
这篇关于按从大到小顺序创建单链表简易写法及改进的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!