- C++
链表模版
- 6 个月前 @
1 条评论
-
xinao023 LV 7 @ 6 个月前
老师,这段代码多余了吧:
题目的要求是:
!:
如果按照要求来,不可能删除链表头,但可能删除链表尾,所以应该改为:
整形变量number1相当于y,节点:Dele相当于s
这是我写的队列和链表代码:
队列:
链表:
- 1
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
struct Node{ // 使用结构自定义一个链表节点数据类型
int data; // 数据域
Node *next; // 指针域
};
Node *head,*p,*r,*tmp; // 定义头指针,节点指针,尾指针,临时节点指针。
int q; // 操作链表的次数
int main(){
// 初始化第一个节点
p = new Node; // 新建节点把节点知识赋值给p指针
p->data=1; // 把1存入p节点
p->next= NULL; // p节点指针域设为空
head = p; // 头指针指向p节点
r = p; // 尾指针也指向p节点
scanf("%d",&q);
for(int i=1;i<=q;i++){
int x;
scanf("%d",&x); // 输入操作的类别
if(x==1){// 插入节点,y控制插入位置,n为插入的节点的值
int y,n;
scanf("%d%d",&y,&n);
p = head;// p指针指向头节点
while(p->data !=y)p=p->next;// 找到值为y的节点
// 插入
tmp = new Node;
tmp->data = n;
tmp->next=p->next;
p->next = tmp;
}else if(x==2){// 查找节点
int y;
scanf("%d",&y);
p = head;
while(p->data !=y&&p->next!=NULL)p=p->next;
if(p->next==NULL){
printf("0\n");
}else printf("%d",p->next->data);
}else if(x==3){// 删除节点
int y;
scanf("%d",&y);
p = head;
Node *s;
if(p->data==y){
s = p;
head = p->next;
free(s);
}else{
while(p->next->data !=y)p=p->next;
s = p->next;
p->next = p->next->next;
free(s);
}
}
}
return 0;
}
老师,这段代码多余了吧:
题目的要求是:
!:
如果按照要求来,不可能删除链表头,但可能删除链表尾,所以应该改为:
整形变量number1相当于y,节点:Dele相当于s
这是我写的队列和链表代码:
队列:
链表: