有序链表的插入
来源:互联网 发布:2015java面试宝典下载 编辑:程序博客网 时间:2024/05/21 12:09
7-1 有序链表的插入(20 分)
已知一个递增有序链表L(带头结点,元素为整数),编写程序将一个新整数插入到L中,并保持L的有序性。其中单链表的类型定义参考如下:
typedef int elementType;
typedef struct lnode
{ elementType data;
struct lnode *next;
}Lnode,* LinkList;
输入格式:
输入分三行
第一行 元素个数
第二行 元素的值,元素间用空格分隔。
第三行 待插入的元素值
输出格式:
在一行中输出有序链表元素值,每个元素前输出一个空格以便与相邻元素分隔。
输入样例:
51 3 5 7 94
输出样例:
1 3 4 5 7 9
#include <stdio.h>#include <stdlib.h>//函数状态码定义#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode, *LinkList;//单链表的结构体定义Status LinkListCreate_CL(LinkList &CL);void ListPrint_CL(LinkList CL);Status LinkListInsert_CL(LinkList &CL,ElemType e);Status LinkListCreate_CL(LinkList &CL){ LNode *curPtr, *rearPtr; CL = (LNode*)malloc(sizeof(LNode)); if(!CL) exit(OVERFLOW); CL->next = NULL; curPtr = CL; rearPtr = CL; //头节点的尾指针和当前指针都指向头节点 int TheNumberOfElement; scanf("%d", &TheNumberOfElement); for(int i = 0; i < TheNumberOfElement; i++) { curPtr = (LNode*)malloc(sizeof(LNode)); if(!curPtr) exit(OVERFLOW); scanf("%d", &curPtr->data); rearPtr->next = curPtr; rearPtr = curPtr;//连接节点 } rearPtr->next = NULL;//最后一个节点的尾指针赋空 return OK;}void ListPrint_CL(LinkList CL){ LNode *p = CL->next; while(p) { printf("%d ", p->data); p = p->next; } printf("\n");}Status LinkListInsert_CL(LinkList &CL,ElemType e){ LNode *curPtr = CL->next, *rearPtr = CL, *temPtr; temPtr = (LNode*)malloc(sizeof(LNode)); if(!temPtr) exit(OVERFLOW); temPtr->data = e; temPtr->next = NULL; if(curPtr == NULL) { rearPtr->next = temPtr; temPtr->next = NULL; return OK; } while(curPtr) { if(curPtr->data >= e) { rearPtr->next = temPtr; temPtr->next = curPtr; return OK; } rearPtr = curPtr; curPtr = curPtr->next; } curPtr->next = temPtr; temPtr->next = curPtr; return OK;}int main(){ LinkList CL; ElemType elem; if(LinkListCreate_CL(CL) != OK) { printf("InitList_Sq: 初始化失败!!!\n"); return -1; } scanf("%d", &elem); LinkListInsert_CL(CL,elem); ListPrint_CL(CL); return 0;}
阅读全文
0 0
- 有序链表的插入
- 有序链表的插入
- 有序链表的插入
- 有序链表的插入
- 有序链表的插入
- 往有序链表的插入元素使原链表依旧有序
- 往有序链表的插入元素
- 有序顺序表的插入
- 有序顺序表的插入
- 有序链表插入新结点的改进
- C有序链表的终极插入函数
- 10实现有序双向循环链表的插入操作
- 有序双向链表的插入 C语言实现
- 重温数据结构:有序循环链表的插入
- 编程算法 - 有序双循环链表的插入 代码(C)
- 往有序单循环链表的插入元素使原链表依旧有序
- 单向循环链表的有序插入 对单向循环链表head插入元素 链表保持有序
- 1.有序顺序表的插入
- MongoDB中使用MapReduce来进行聚合操作
- 10月2日--11月12日(1小时,剩2887小时)
- [datapump] ORA-39034: Table TABLE_DATA:<table Name> does not exist.
- gdbus demo程序简介
- SDL 实现马赛克
- 有序链表的插入
- python -零基础
- 11.7-
- Communications Among Activities and Fragments
- CodeBlocks使用小技巧
- 第十周项目4哈夫曼编码的算法验证
- 测试“我”对你的心意!
- ios正则表达式:汉字+字符+数字+常用符号
- float double int long long int的精度