用cpp设计一个线性表,采用链式存储结构,删除一个结点。
时间: 2024-04-29 20:24:52 浏览: 7
好的,这个问题可以回答。对于使用链式存储结构的线性表,删除一个结点需要先找到要删除结点的前一个结点,然后将它的指针指向要删除结点的下一个结点,最后删除该结点即可。具体实现可以参考以下的代码:
```cpp
#include <iostream>
using namespace std;
struct Node{
int data;
Node *next;
};
Node* deleteNode(Node *head, int val){
if(head == NULL){
return head;
}
if(head->data == val){
Node *temp = head;
head = head->next;
delete temp;
return head;
}
Node *prev = head;
Node *cur = head->next;
while(cur != NULL && cur->data != val){
prev = cur;
cur = cur->next;
}
if(cur != NULL){
prev->next = cur->next;
delete cur;
}
return head;
}
int main(){
Node *head = new Node();
head->data = 1;
Node *node1 = new Node();
node1->data = 2;
head->next = node1;
Node *node2 = new Node();
node2->data = 3;
node1->next = node2;
Node *node3 = new Node();
node3->data = 4;
node2->next = node3;
node3->next = NULL;
cout << "删除前的链表:";
Node *cur = head;
while(cur != NULL){
cout << cur->data << "->";
cur = cur->next;
}
cout << "NULL" << endl;
head = deleteNode(head, 3);
cout << "删除结点3后的链表:";
cur = head;
while(cur != NULL){
cout << cur->data << "->";
cur = cur->next;
}
cout << "NULL" << endl;
return 0;
}
```
以上就是删除一个结点的实现方法,代码可以在不同的编译器中运行。