C++单链表动态建链,插入,删除代码笔记
2024-07-29 17:15:06
发布于:北京
#include<iostream>
using namespace std;
struct node{//定义结构体结点
int data;//数据域
node *next;//指针域
};
node *head=NULL;//创建头部结点
node *tail=NULL;
void append_data(int x){//输入数据
if(tail==NULL){
head=tail=new node;
}else{
node *new_node=new node;//从tail插入数据
tail->next=new_node;
tail=new_node;
}
tail->data=x;
tail->next=NULL;
}
void print_lst(){//输出单链表
node *step=head;//临时结点,把头部地址存进去
while(step){//只要不为空
cout<<step->data<<" ";//输出数据
step=step->next;
}
cout<<endl;
}
void insert_node(node *p, int d) {//插入节点
node *new_node = new node;//创建新节点
new_node->data = d;
new_node->next = p->next;
p->next = new_node;//插入
}
void del_data(int d) {
node *step = head;
if (step == NULL) return ;
if (step->data == d) {
head = head->next;//往后移动头部
delete step;//把原来的头部删除
} else {
while (step->next) {//非头部删除
if (step->next->data == d) {//删除数据结点为d的结点
node *del = step->next;
if (tail == del) tail = step;
step->next = step->next->next;
delete del;
break;
}
step = step->next;
}
}
}
int main(){
/*
append_data(9);//输入(9)
print_lst();//输出
*/
/*
node *step = head;
while (step) {
if (step->data == 3) {//在数据结点3的后面,插入结点5
insert_node(step, 5);
step = step->next;
}
step = step->next;
}
print_lst();//输出
*/
/*
del_data(5);//删除数据结点为5的结点
print_lst();//输出
*/
return 0;
}
这里空空如也
有帮助,赞一个