#include<iostream>
using namespace std;
//int main() {
// int a=11;
// int* p = &a; //1.指针
// //a = a * b; /// 2.乘法
// * p = 100;//
// cout << &a<<endl;
// cout << p;
//}
typedef struct Node {
int data;//以后用模板写
Node* next;
}Node,*LNode;
void ListNode(LNode& L) {
L = new Node;
L->next = NULL;
}
//单链表的初始化
void creat(LNode& L) {//有头节点(头插)头插:输出是倒序的
//Node* p = new Node;
int n = 0;
cin >> n;
for (int i = 0; i < n; i++) {
Node* p = new Node;
cin >> p->data;
p->next = L->next;
L->next = p;
}
}
void creat1(LNode& L) {//后插法:正序输出
int n;
cin >> n;
Node* r=L ;
for (int i = 0; i < n; i++) {
Node* s = new Node;
cin >> s->data;
r->next = s;
r = s;
s->next = NULL;//
}
}
//单链表的插入(在某个位置插入)
void init(LNode& L, int i, int e) {
LNode p = L;
for (int j = 0; j < i - 1; j++) {
p = p->next ;
}
LNode s = new Node;
s->data = e;
s->next = p->next;
p->next = s;
}
//单链表的删除
void delet1(LNode& L, int i, int e) {
LNode p = L;
for (int j = 0; j < i - 1; j++) {
p = p->next;
}
LNode temp = p->next;
p->next = p->next->next;
e = temp->data;
//cout <<"E是"<<e << endl;
delete temp;
temp = NULL;
}
//获取第i个节点的值
//void qu(LNode& L, int i, int& e) {
//
//}
int len(LNode& L) {
LNode p = L->next;
int i = 1;
while (p->next) {
i++;
p = p->next;
}
return i;//每次函数调用时,都会在栈上为局部变量分配内存空间,当函数执行结束时,
//这些局部变量的内存空间就会被释放,但函数的返回值(在这种情况下是 i 的值)
//会被保存下来,因为返回值通常存储在寄存器或者内存中,直到被调用方使用。
}
int main() {
Node* L ;
ListNode(L);
creat1(L);
/*int i;
int e=0;
cin >> i */;
//init(L, i, e);
//delet1(L, i, e);
Node* p = L->next;
while (p != NULL) {
cout << p->data<<" ";
p = p->next;
}
int n=len(L);
cout << n;
//cout << endl;
//cout << e;//e的值为什么总是初始的0,不改变
}
单链表C++
最新推荐文章于 2024-07-20 22:49:13 发布