Day 12

实验三

1.int fun(vector <float>&s,int n){//传单个 vector<float>

2.

stu *a=new stu[n];//不支持传引用

3.//固定数组的引用

//const int MAX_STU = 50;

//void shuchu(stu (&a)[MAX_STU], int n)

3.单项链表(普通版)

#include<iostream>

using namespace std;

struct node{

int num;

node*next;

// 构造函数,简化结点初始化

// node(int n = 0, node* p = NULL) : num(n), next(p) {}

};

int main(){

node a[100],head,*p;

int i(0),shu;

head.next=NULL;

node *tail=&head;//尾指针挂载

while(cin>>shu&&shu!=0){

a[i].num=shu;

tail->next=&a[i];

tail=&a[i];

i++;

}

tail->next=NULL;

cout<<"The data of link:"<<endl;

p=head.next;

while(p!=NULL){

cout<<p->num<<" ";

p=p->next;

}

return 0;

}

4.链表操作

输入若干个正整数(输入-1为结束标志),建立一个单向链表,将其中的偶数值结点删除后输出。

//nullptr 是 C++11 新增的关键字,专门用于表示 “空指针

//NULL 宏定义,本质是整数 0(或 0L)

#include<iostream>

using namespace std;

struct Node {

int data;

struct Node *next;

};

Node* createList() {

Node* head = new Node();

head->next = nullptr;

Node* tail = head;

int num;

while (cin >> num && num != -1) {

if (num > 0) {

Node* newNode = new Node();

newNode->data = num;

newNode->next = nullptr;

tail->next = newNode;

tail = newNode;

}

}

return head;

}

// 删除链表中的偶数结点

void deleteEvenNodes(Node* head) {

Node* pre = head; // 前驱结点(指向待判断结点的前一个结点)

Node* cur = head->next; // 当前结点(遍历链表)

while (cur != nullptr) {

if (cur->data % 2 == 0) { // 偶数结点,执行删除

pre->next = cur->next; // 前驱结点跳过当前偶数结点

delete cur; // 释放偶数结点内存

cur = pre->next; // 当前结点后移(无需移动前驱)

} else { // 奇数结点,前驱和当前结点均后移

pre = cur;

cur = cur->next;

}

}

}

// 遍历输出链表(格式:结点值间加空格,无前置/后置空格)

void printList(Node* head) {

Node* p = head->next;

bool isFirst = true; // 标记第一个有效结点,控制空格

while (p != nullptr) {

if (!isFirst) {

cout << " ";

}

cout << p->data;

isFirst = false;

p = p->next;

}

cout << endl;

}

// 释放链表内存(避免内存泄漏)

void freeList(Node* head) {

Node* p = head;

while (p != nullptr) {

Node* temp = p;

p = p->next;

delete temp;

}

}

int main() {

Node* head = createList();

deleteEvenNodes(head);

printList(head);

freeList(head);

return 0;

}

全部评论

相关推荐

纯真的河老师在喝茶:第一个是这个时间点岗位少,第二个是这个简历重复度太高了,10个有9个简历差不多的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务