PTA链表的有序插入

📅 2026/7/21 10:45:03
PTA链表的有序插入
在递减的整数链表带头结点中插入一个新整数结点并保持链表结点的递减性。函数接口定义LinkList InsertList( LinkList L, EType X );其中List结构定义如下typedef int Type; typedef struct LNode { EType data; struct LNode *next; }LNode,*LinkList;L是给定的带头结点的单链表其结点存储的数据是递减有序的函数Insert要将X插入L并保持链表的递减有序性返回插入后的链表头指针。裁判测试程序样例#include stdio.h #include stdlib.h typedef int EType; typedef struct LNode { EType data; struct LNode *next; }LNode,*LinkList; LinkList CreateList(); void PrintList( LinkList L ); /* 细节在此不表 */ LinkList InsertList( LinkList L, EType X ); int main() { LinkList L; EType X; L CreateList(); scanf(%d, X); L InsertList(L, X); PrintList(L); return 0; } LinkList CreateList() { LinkList L,r,p; int i; EType e; L (LinkList)malloc(sizeof(LNode)); L-next NULL; r L; scanf(%d,i); while(i0) { scanf(%d,e); p (LinkList)malloc(sizeof(LNode)); p-data e; p-next r-next; r-next p; r p; i--; } return L; } /* 请在这里填写答案 */输入样例6 7 6 5 4 3 1 2输出样例7 6 5 4 3 2 1代码LinkList InsertList( LinkList L, EType X ) { LinkList p,s; p(LinkList)malloc(sizeof(LNode)); s(LinkList)malloc(sizeof(LNode)); pL; if(!L-next) { s-dataX; s-nextp-next; p-nexts; return L; } while(Xp-next-datap-next-next) { pp-next; } if(p-next-nextNULL) pp-next; s-dataX; s-nextp-next; p-nexts; return L; }