2.单链表内元素的插入
2010-04-29 19:16
190 查看
多的不说,对于这些概念等在严蔚敏老师的书中都讲的很详细,这里是给大家分享一些实例。让大家加深数据结构的学习。
希望大家多多支持:
C++奋斗乐园|C++论坛|算法学习|ACM/ICPC :http://www.cppleyuan.com/
②群:23840480
/******************************** 单链表的插入 ********************************/ //算法功能:在单链表的第i个位置插入一个新的数据元素e. //算法思路:该算法可分三步实现:①查找,在单链表中找到第 i-1 个结点并由指针p指示;②申请,申请新结点s,将其数据 //域的值置为e;③插入,通过修改指针域将新结点s插入单链表。 #include <stdio.h> #include <malloc.h> typedef int Status; #define OK 1; #define ERROR 0; //定义链表数据存储结构 typedef struct LNode { int data; struct LNode *next; }LNode, *Linklist; //打印链表元素 void print_list(Linklist L) { Linklist p; printf("建立的单链表为:/n"); p = L->next; while(p != NULL) { printf("%d ", p->data); p = p->next; } printf("/n"); } //逆序输入数据元素,建立带头结点的单链表 void creat_list(Linklist &L) { Linklist p; L = (LNode*) malloc (sizeof(LNode)); //建立链表头结点 L->next = NULL; printf("请逆序输入链表数据元素Ctrl+Z结束,建立带头结点的链表:/n"); p = (LNode*) malloc (sizeof(LNode)); while((scanf("%d", &(p->data))) != EOF) // 按Ctrl+Z组合键结束输入 { p->next = L->next; L->next = p; p = (LNode*) malloc (sizeof(LNode)); } } //在链表中第 i 个位置插入新的元素e Status ListInsert_L(Linklist L, int i, int e) { int j = 0; LNode *s, *p; p = L; while(p && j<i-1) { p = p->next; j++; } if(!p || j>i-1) return ERROR; s = (Linklist) malloc (sizeof(LNode)); if(s == NULL) return ERROR; s->data = e; s->next = p->next; p->next = s; return OK; } int main() { Linklist L; int e, i; creat_list(L); print_list(L); printf("请输入要插入元素的位置i:/n"); scanf("%d", &i); printf("请输入要插入的元素的值:/n"); scanf("%d", &e); ListInsert_L(L, i, e); print_list(L); return 0; }
相关文章推荐
- 双向链表-插入元素
- 逆位序正位序建表以及插入和删除值以及返回链表中元素个数
- 链表非降序列插入元素
- 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。 ② 实现该线性表的遍历。 ③ 在该单链表的第i个元素前插入一个整数。 ④ 删除该单链表中的第i个元素,其值通过参数将其返回。 ⑤ 建立两个
- 从键盘读入n个整数(升序),请编写算法实现: 建立带表头结点的单链表; 显示单链表,(形如:H->10->20->30->40); 在有序单链表中插入新的数据元素x; 将单链表就地逆
- 单向循环链表的有序插入 对单向循环链表head插入元素 链表保持有序
- 链表插入元素的三种递归实现 -- 简单递归,数据累加器,函数累加器
- 单链表--在第i个位置前插入元素e
- 链表创建、测长、打印、删除元素、插入、排序、逆置
- 2.17-比较有头节点的单链表与无头节点插入元素的区别;
- 向带头结点的双向链表中第i个位置之前插入元素e
- 单链表插入删除元素时间复杂度探究
- 编写算法实现建立一个带头结点的含n个元素的双向循环链表H,并在链表H中的第i个位置插入一个元素e
- 在一个环形的无重复元素的排序单向链表中插入一个元素
- 链表的概念以及原理 插入和删除元素
- 数据结构 P38 算法实现 在带头结点的单链表的第i个元素插入元素e
- 双向链表元素的插入
- STL链表之插入元素(list)
- 《算法与数据结构》实验课实验三思考题——有序链表插入元素——C语言
- 队列用链表实现(建立,插入新元素,删除元素,读取元素,全部删除,全部读出,判断是否为空,清空)