专业网站建设排名,做问卷的几个网站,中国网站建设平台,温江做网站今天#xff0c;我来讲一下数据结构链表的基本操作#xff0c;首先我们要知道链表的基本操作有创建#xff0c;查找#xff0c;插入#xff0c;删除。接下来我们逐一实现操作。
结构体定义
typedef struct Node* List;
struct Node{
ElementType Data;
List next;
};文章…今天我来讲一下数据结构链表的基本操作首先我们要知道链表的基本操作有创建查找插入删除。接下来我们逐一实现操作。
结构体定义
typedef struct Node* List;
struct Node{
ElementType Data;
List next;
};文章目录 创建查找插入删除 创建
List creat() {
List L;
L (List)malloc(sizeof(struct Node));
L-next NULL;
return L;
}创建相对比较简单先申请内存之后让next为NULL返回我们创建的头节点就行了。
查找
int Find(List head, int X) {
List L head;
int i 0;
while (L-next ! NULLiX) {L L-next;i;
}
if (i X) {return i;
}
else {return NULL;
}
}这里我们有两个参数一个是指向头节点的指针一个是我们要插入的位置序号在这里我们先要让i0因为这个链表是有头指针的第一个不能算进节点中之后我们进行循环并且让i循环结束的条件要么是找到了也就是ix要么是没有找到找到了我们就返回i的值没有找到我们就返回NULL表明我们没有找到。
插入
bool Insert(List head, ElementType X, int p) {
int i 1;
int k;
List L head;
k Find(head, p);
if (k NULL) {printf(插入的位置有错);return false;
}
else {List tail (List)malloc(sizeof(struct Node));tail-Data X;for (; L-next ! NULLi p ; i) {L L-next;}tail-next L-next;L-next tail;return true;
}
}这里我们输入三个参数一个是头节点一个是我们要插入的值一个是我们要插入的位置。 在这里我们仍然用i来计数为什么这里我们用i1而不是i0呢因为比如我们要插入到第二个节点那么我们只需要找到第一个节点的位置而不需要第二个节点的地址之后我们检查插入的合法性如果不合法那么我们直接返回否则就继续在这里我们先申请一个节点的空间之后进入循环当循环结束的时候我们肯定找到了要插入位置的前一个位置这时我们就可以进行节点的插入了之后返回true。
删除
bool Delete(List head, int p) {
int k,i1;
List L head;
List tail;
k Find(head, p);
if (k NULL) {printf(删除的位置错误);return false;
}
else {for (; L-next ! NULLip; i) {L L-next;}tail L-next;L-next L-next-next;free(tail);return true;
}
}在这里我们输入两个参数一个是头节点一个是要删除的位置。 在这里我们依然让i1原因是链表是单向的我们只需要找到要删除位置的前一个位置就行了还是先检查删除的合法性如果不合法那么我们就直接返回如果合法那么我们就进行下一步操作当循环终止的时候说明我们找到了删除位置的前一个位置这时我们就可以进行删除操作了 至此讲解完毕。 新人写作难免有错误或不够精简的地方请谅解也请各位指点