整型数组构造

int[] scores= {89 , -23 , 64 , 91 , 119 , 52 , 73};
int anArray2 = new int[10];
 

链表是一种常用的数据结构,由一系列节点组成,每个节点包含了数据和指向下一个节点的指针。链表的优势在于可以动态地添加和删除节点,相比于数组,它的大小不需要提前确定,而且在插入或删除节点时不需要移动其他节点,因此效率更高。 链表结点类listnode的定义如下: ```cpp class listnode { public: int val; listnode* next; listnode(int x) : val(x), next(nullptr) {} }; ``` 链表类list的必要成员数据和成员函数如下: ```cpp class list { private: listnode* head; // 链表头指针 public: list() : head(nullptr) {} // 默认构造函数,初始化为空链表 void append(int val); // 在链表末尾添加一个节点 void remove(int val); // 删除值为val的节点 void reverse(); // 反转链表 void print(); // 打印链表 }; ``` 链表中的数据类型为int,因此我们需要添加一个节点时,只需要传入一个int参数val,即可创建一个新节点,代码如下: ```cpp void list::append(int val) { listnode* new_node = new listnode(val); // 创建新节点 if (head == nullptr) { head = new_node; // 如果链表为空,新节点作为头节点 } else { listnode* p = head; while (p->next != nullptr) { p = p->next; // 找到链表末尾 } p->next = new_node; // 将新节点添加到末尾 } } ``` 删除节点时,需要遍历链表,找到值为val的节点,并将其从链表中删除,代码如下: ```cpp void list::remove(int val) { if (head == nullptr) { return; // 如果链表为空,直接返回 } if (head->val == val) { listnode* tmp = head; head = head->next; delete tmp; // 如果头节点就是要删除的节点,直接删除 return; } listnode* p = head; while (p->next != nullptr && p->next->val != val) { p = p->next; // 找到要删除的节点的前一个节点 } if (p->next != nullptr) { listnode* tmp = p->next; p->next = tmp->next; delete tmp; // 删除节点 } } ``` 反转链表时,需要遍历链表,将每个节点的next指针指向它的前一个节点,代码如下: ```cpp void list::reverse() { listnode* pre = nullptr; listnode* cur = head; while (cur != nullptr) { listnode* nxt = cur->next; // 保存下一个节点 cur->next = pre; // 反转指针 pre = cur; cur = nxt; } head = pre; // 头指针指向反转后的第一个节点 } ``` 打印链表时,只需要遍历链表,将每个节点的值打印出来,代码如下: ```cpp void list::print() { listnode* p = head; while (p != nullptr) { cout << p->val << " "; p = p->next; } cout << endl; } ``` 在主函数中,我们可以根据给定的整型数组构造一个链表,并将链表反向输出,代码如下: ```cpp int main() { int a[] = {1, 2, 3, 4, 5}; int n = sizeof(a) / sizeof(int); list l; for (int i = 0; i < n; i++) { l.append(a[i]); // 构造链表 } l.reverse(); // 反转链表 l.print(); // 输出链表 return 0; } ``` 输出结果为:5 4 3 2 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值