首页 > 编程知识 正文

链表带头结点和不带头结点的区别,单链表带头结点和不带头结点的区别

时间:2023-05-04 05:56:32 阅读:51244 作者:2763

问题b实验11_10_链表排序主题说明

已知由正整数组成的无序顺序,但至少有一个元素。 你的任务是创建一个链表,使用该链表存储这个正整数序列,并对这个链表进行排序,使排序的链表保持升序。 输入正整数时使用-1作为结束标志。 请注意-1不是这个正整数序列的元素。 不要统计-1。 在排序过程中,您可以自行选择排序算法(如冒泡排序、排序选择等),但必须更改节点的指针字段进行排序,而不是更改节点的数据字段。 程序结束后,释放所有节点占用的空间。

输入

元素数量未知的正整数序列。 输入“-1”结束,在输入“-1”之前至少输入一个正整数。

输出功率

在排序的链表中,每个元素后面都有一个空间。 请注意,最后一个元素后面只有换行符。

数据最多的测试用例的节点数为1000个,所有整数都可以存储为int类型。

请注意输入输出格式。

样本输入复印

49 38 65 97 76 13 27 49 -1示例输出复印

thenewlistis :1327384949657697/* creatthelinkedlistandsortthelinkedlist @ author : Cang cheng @ date :13/3/2021 * (; 结构节点*创建链接列表(结构节点*头部ptr ); voiddellinkedlist (结构节点*头部ptr; 语音链接列表(结构节点*头部ptr; intgetnodenum (结构节点*头部ptr ); voidprintlist (结构节点*头部ptr; int main () { struct node *headPtr=NULL; head ptr=创建链接列表(head ptr ); 超级链接列表(head ptr; 打印列表(头ptr ); 头部链接列表(head ptr; 返回0; //带有空闲节点的链表struct node * creat linked list (struct node * head ptr ) { struct node *newPtr,*currentPtr; int num; 新ptr=malloc (sizeof ) structnode ); newPtr-nextPtr=NULL; headPtr=newPtr; scanf('%d ',num ); wile(num!=-1 )新ptr=malloc (sizeof )结构节点); newPtr-data=num; newPtr-nextPtr=NULL; 头部ptr-next ptr==null (if ) { currentPtr=newPtr; 头部ptr-next ptr=current ptr; } else { current ptr-next ptr=new ptr; currentPtr=newPtr; }Scanf('%d ',num ); }返回头部ptr; //链表voiddellinkedlist (结构节点*头部ptr ) {结构节点*thatPtr,*thatPtr; thisPtr=headPtr; while(thisptr!=null}{thatptr=thisptr-nextptr; 自由(this ptr ); thisPtr=thatPtr; }//按升序排序voidsortlinkedlist (struct node * head ptr ) { struct node *thisPtr,*thatPtr,*lastPtr; int nodeNum,标志; nodenum=get nodenum (头ptr ); for(intI=1; i=nodeNum - 2; I ) { lastPtr=headPtr; thisPtr=lastPtr-nextPtr; thatPtr=thisPtr-nextPtr; for(intj=1; j=nodeNum - 2; j ) if(thisptr-datathatptr-data ) this ptr-next ptr=that ptr-next ptr; thatPtr-nextPtr=thisPtr; lastPtr-nextPtr=thatPtr; } lastPtr=lastPtr-nextPtr; thisPtr=lastPtr-nextPtr; thatPtr=thisPtr-nextPtr; }//得到的节点数intgetnodenum (struct node * head ptr ) { int num=0; 结构节点* this ptr; thisPtr=headPtr; while(thisptr!=null(thisptr=thisptr-nextptr; num; }返回编号; //排序结果voidprintlist (结构节点*头部ptr ) {结构节点* this ptr; thisPtr=headPtr-nextPtr; 打印机(thenewlistis : ); while(thisptr!=null(if ) thisptr-nextptr!=null(printf('%d ',thisPtr-data ) ); }elseif(thisptr-nextptr==null ) printf ) ' %dn ',thisPtr-data ); } thisPtr=thisPtr-nextPtr; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。