智能指针实现单链表

#include
#include
#include
#include
using namespace std;
struct LinkNode;
using sharedPtr = std::shared_ptr;
struct LinkNode
{
int val;
sharedPtr next;
};
class LinkList
{
private:
int length;
sharedPtr head;
public:
LinkList();
LinkList(const LinkList &otherlist);
void inserToList(int ins);
void deleatFromListBeginHead();
void deleatFromListBeginHead(int num);

void show();
int getLength();
sharedPtr getHead();
~LinkList();

};
LinkList::LinkList() :length(0)
{
head = nullptr;
}
LinkList::LinkList(const LinkList &otherlist)
{
auto con = otherlist.head;
while (con)
{
inserToList(con->val);
con = con->next;
}
}
void LinkList::inserToList(int ins)
{
auto node = std::make_shared();
node->val = ins;
node->next = head;
head = node;
++length;
}
void LinkList::deleatFromListBeginHead()
{
if (head)
{
head = head->next;
–length;
cout << “delete finish” << endl;
}
else
{
cout << “this list is empty” << endl;
}
}
void LinkList::deleatFromListBeginHead(int num)
{
if (num <= length)
{
for (int i = 0; i < num; i++)
{
head = head->next;
–length;
}
cout << “delete finish” << endl;
}
else
{
cout << “num is valid” << endl;
}
}
void LinkList::show()
{
sharedPtr node = head;
while (node)
{
cout << node->val << “->”;
node = node->next;
if (!node->next)
{
cout << node->val;
return;
}
}

}
int LinkList::getLength()
{
return length;
}
sharedPtr LinkList::getHead()
{
return head;
}
LinkList::~LinkList()
{

}
int main()
{
LinkList *l = new LinkList();
srand((unsigned)time(NULL));
for (int i = 0; i < 15; i++)
{
int temp = rand() % 100;
cout << temp << “->”;
l->inserToList(temp);
}
cout << endl;
l->show();
cout << endl;
l->deleatFromListBeginHead(10);

system("pause");
return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,作为人工智能模型,我没有源代码的能力。但是我可以向你解释一个单链表学生成绩管理系统的基本原理。 首先,单链表是一种数据结构,用于存储一系列具有相同类型的数据。每个节点包含两个部分:数据和指向下一个节点的指针。这种结构可以轻松地实现插入和删除操作,但是访问节点需要按顺序遍历整个链表。 在学生成绩管理系统中,每个节点可以存储一个学生的信息,例如姓名、学号和成绩。可以通过遍历整个链表来查找、添加或删除学生信息。可以使用头节点来方便地管理整个链表,例如在头节点中存储链表的长度等信息。 下面是一个简单的单链表学生成绩管理系统的伪代码: ```python class Node: def __init__(self, name, id, score): self.name = name self.id = id self.score = score self.next = None class LinkedList: def __init__(self): self.head = Node(None, None, None) self.length = 0 def add(self, name, id, score): new_node = Node(name, id, score) cur = self.head while cur.next != None: cur = cur.next cur.next = new_node self.length += 1 def remove(self, id): cur = self.head while cur.next != None: if cur.next.id == id: cur.next = cur.next.next self.length -= 1 return cur = cur.next def find(self, id): cur = self.head while cur.next != None: if cur.next.id == id: return cur.next cur = cur.next return None def display(self): cur = self.head.next while cur != None: print(cur.name, cur.id, cur.score) cur = cur.next ``` 这只是一个简单的示例,实际的学生成绩管理系统会更加复杂。但是,使用单链表作为数据结构可以方便地实现这个系统,并且具有良好的可扩展性和灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值