|
发表于 2018-3-4 11:18:55
|
显示全部楼层
代码都没有~
我就说一点我的理解吧。。。
先抛出三个问题:
1. 要对哪一个链表进行操作
2. 链表要插入在哪个节点的前面,或者说你这个节点要插入在什么位置~
3. 插入节点的数据域的值是什么
综上所述,插入一个节点,我们至少需要三个参数
下面上代码:
- bool insert (PNODE pHead, int pos, int val){
- int i = 0;
- PNODE p = pHead;
- // 这个算法我迄今为止还没搞明白
- // 但是他确实能够过滤一些意外情况。。。
- // 没搞懂就先把他背会吧。苦笑。。
- while (P != NULL && i < pos-1){
- p = p->pNext;
- i++;
- }
-
- if (i > pos-1 || p == NULL){
- return false;
- }
- // 过滤了这些意外情况!就开始造节点了~~
- PNODE pNew = (PNODE)malloc(sizeof(NODE));
- // 检查一下是否分配成功了~如果失败了,就把程序停了~
- if (pNew == NULL){
- printf ("内存分配失败~");
- exit(-1);
- }
- // 能到这,肯定就是内存分配成功了,并且过滤了意外情况,所以!开始给节点赋值!
- pNew->data = val; // 给数据域赋值~
- PNODE q = p->pNext; //下面这三步为了能让你看懂~ 还是画张图吧。。你待会去下面找图~
- p->pNext = pNew;
- pNew->pNext = q;
-
- return true;
- }
复制代码
PS画图果然没有coreldraw方便~ 苦笑~ |
|