- 论坛徽章:
- 11
|
《大话数据结构》上的实现代码:
定义:- typedef int Status;
- typedef char ElemType;
- typedef struct Node
- {
- ElemType data;
- struct Node *next;
- }Node;
- typedef struct Node *LinkList;
复制代码 插入指定位序的元素- Status InsertElem (LinkList *L, int i, ElemType e)
- {
- int j = 1;
- LinkList p, s;
- p = *L;
- while (p && j < i)
- {
- p = p->next;
- j++;
- }
- if (!p && j > i)
- return ERROR;
- s = (LinkList)malloc(sizeof(Node));
- p->data = e;
- s->next = p->next;
- p->next = s;
- return OK;
- }
复制代码 删除指定位序的元素- Status DeleteElem (LinkList *L, int i, ElemType *e)
- {
- int j = 1;
- LinkList p, q;
- p = *L;
- while (p->next && j < 1)
- {
- p = p->next;
- ++j;
- }
- if (!(p->next) || j > i)
- return ERROR;
- q = p->next;
- p->next = q->next;
- *e = q->data;
- free(q);
- return OK;
- }
复制代码 有2个疑问:
为什么插入元素的时候是从p开始判断非NULL,而删除操作时直接从p->next判断非NULL?
在删除元素的操作中,为什么写成++j,而不是j++,这里有什么影响结果的区别吗?
请各位指点一下,谢谢。 |
|