【1】输入一个数列以0为结束标志,建立链式线性表,查找其中最大的数并输出删除释放节点,然后对剩余的进行排序,并输出释放节点。
参考代码:
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct LinkNode{//链表结点结构体定义;
- int data;
- struct LinkNode *next;
- }LinkNode,*SqList;
- void createList(SqList &L){//创建单链表的函数;
- SqList p=L,q,s;
- int value;
- scanf("%d",&value);
- if(value==0)return;
- L->data=value;
- s=NULL;
- while(1){
- int v;
- scanf("%d",&v);
- if(v==0)
- return;
- q=(SqList)malloc(sizeof(LinkNode));
- q->data=v;
- q->next=s;
- p->next=q;
- p=q;
- }
- L=L->next;
- }
- void display(SqList L){//输出单链表;
- SqList p=L;
- while(p->next!=NULL){
- printf("%d->",p->data);
- SqList q=p->next;
- free(p);//释放结点;
- p=q;
- }
- printf("%d",p->data);
- free(p);//释放结点;
- printf("/n");
- }
- int getMax(SqList L){//获取最大结点值;
- int MaxNum=0;
- SqList p=L;
- while(p!=NULL){
- if(p->data>MaxNum)MaxNum=p->data;
- p=p->next;
- }
- return MaxNum;
- }
- void freeMax(SqList &L){//释放此链表中值最大的结点;
- if(L!=NULL){
- SqList p,q;
- p=L;
- q=L->next;
- if(p->data==getMax(L)){
- free(p);
- L=q;
- }
- else{
- while(q!=NULL){
- if(q->data==getMax(L)){
- p->next=q->next;
- free(q);
- break;
- }
- p=q;
- q=q->next;
- }
- }
- }
- }
- void sortList(SqList &L){