Ksss丶 发表于 2018-3-3 23:40:19

关于链表插入结点的死循环怎么解决

视频中留的一个课后习题,但是想不明白。。

风过无痕丶 发表于 2018-3-4 11:18:55

{:10_277:} 代码都没有~
我就说一点我的理解吧。。。

先抛出三个问题:

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方便~ 苦笑~

lanceson 发表于 2018-3-4 11:32:35

{:10_262:}
页: [1]
查看完整版本: 关于链表插入结点的死循环怎么解决