还剩2页未读,继续阅读
文本内容:
线性表的插入和删除数据结构线性表是一种基本的数据结构,它由一组有序的元素构成,每个元素最多只有一个前驱和一个后继在数据结构中,线性表可以通过链式存储和顺序存储两种方式来实现其中,链式存储使用节点来存储数据和地址,顺序存储则使用数组来存储数据下面就以链式存储为例,介绍一下线性表的插入和删除操作
一、线性表的插入在线性表中插入一个元素,需要遵循以下步骤申请一个新节点,并将要插入的元素存储在新节点中
1.如果该元素要插入到链表的头部,直接将该节点插入到头节点的位置,并更
2.新头节点指针;否则,遍历链表直到找到要插入的位置将新节点插入到要插入的位置,并修改该节点的前驱和后继节点的指针,使
3.其指向新节点更新头节点指针,使其指向新的头节点
4.struct Node{int data;struct Node*next;;void insertstruct Node**head_ref intnew_dataAstruct Node*temp,*new_node;=㊀㊀㊀㊀n w_nod structNod*mallocsiz ofstruct Node;new node-daLa newdaLa;new_node-next=*head_ref;*head_ref=new_node;在以上示例代码中,函数使用了传引用技术的指针来操作头节点指针insert通过传递头节点的地址,该函数可以修改头节点指针函数先将头节点head_ref0指针所指向的头节点保存到节点中,然后将新节点的域设置为temp data将新节点的域设置为头节点原先指向的节点,最后将头节点指针new_data,next指向新节点这样就完成了在链表头部插入一个节点的操作
二、线性表的删除在线性表中删除一个元素,需要遵循以下步骤遍历链表,找到要删除的元素所在的节点
1.如果该元素在链表的头部,直接修改头节点的指针,使其指向下一个节点
2.如果该元素在链表的尾部,修改其前驱节点的域,使其指向下一个节点
3.next删除要删除的节点,释放其内存
4.void deletestructNode**head_ref intkeyA㊀㊀structNodemp=*head_ref*pr v;zif temp!=NULLtemp-data==key*head_ref=temp-next;//changing headfreetemp;//free memoryreturn;whiletemp!=NULLtemp-data!=keyprev=temp;temp=temp-next;㊀if tmp==NULL return;//element notfound prev-next=temp-next;//point prevto nextof tempfreetemp;//freememory在以上示例代码中,函数使用了传引用技术的指针来操作头节点指针delete通过传递头节点的地址,该函数可以修改头节点指针函数遍历链表寻找head_ref0要删除的元素如果该元素在链表的头部,直接修改头节点的指针否则,修改前驱节点的域最后释放要删除的节点的内存这样就完成了在链表中删除一next个元素的操作。
个人认证
优秀文档
获得点赞 0