简单单向链表的创建,访问,使用

链表就是一条数据,每个数据包含下一个数据的地址,那么从头数据开始就可以访问全数据了

单向链表:

添加元素:

 

int ptop = 1;
struct a{
	int val;
	a* nex;
}p[MAXM * 2];
a* head[MAXN];
void add(int x,int val)
{
	p[ptop].nex = head[x];//step1
	p[ptop].val = val;
	head[x] = &p[ptop];//step2
	ptop++;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您想问关于链表的内容。下面是回答您问题的具体步骤: 1. 创建一个由6个结点的单向链表 单向链表可以通过定义一个结构体来实现,具体代码如下: ```c++ struct ListNode { int value; ListNode* next; ListNode(int value): value(value), next(NULL) {} }; ``` 然后,我们可以定义一个头指针来指向链表的第一个结点。实现代码如下: ```c++ ListNode* head = new ListNode(0); ListNode* p = head; for (int i = 1; i <= 6; i++) { ListNode* node = new ListNode(i); p->next = node; p = p->next; } ``` 这样,我们就实现了一个由6个结点的单向链表。 2. 实现结点的增加、删除、查找、移动 单向链表的操作主要是基于指针成的。下面是具体操作: - 增加结点 为了方便,我们定义一个尾指针tail来指向链表的最后一个结点,这样就可以方便地在链表尾部添加新结点。实现代码如下: ```c++ ListNode* tail = head; while (tail->next != NULL) { tail = tail->next; } ListNode* node = new ListNode(7); tail->next = node; ``` 这样就在链表尾部添加了一个值为7的新结点。 - 删除结点 删除结点需要先找到要删除的结点,然后再通过指针重新连接前后两个结点。实现代码如下: ```c++ ListNode* p = head; while (p != NULL && p->value != 3) { p = p->next; } if (p != NULL) { ListNode* temp = p->next; p->next = temp->next; delete temp; } ``` 这样就删除了值为3的结点。 - 查找结点 查找结点的方法很简单,只需要沿着链表依次比较每个结点的值,直到找到要查找的结点或者到达链表尾部。实现代码如下: ```c++ ListNode* p = head; while (p != NULL && p->value != 4) { p = p->next; } if (p != NULL) { // 找到了值为4的结点 } else { // 没有找到 } ``` - 移动结点 移动结点需要先找到要移动的结点,然后通过指针重新连接前后两个结点。实现代码如下: ```c++ ListNode* p = head; while (p != NULL && p->value != 2) { p = p->next; } if (p != NULL) { ListNode* temp = p->next; p->next = temp->next; temp->next = head->next; head->next = temp; } ``` 这样就把值为2的结点移动到链表头部。 3. 遍历显示 遍历链表需要沿着链表依次访问每个结点,并将结点的值打印出来即可。实现代码如下: ```c++ ListNode* p = head->next; while (p != NULL) { cout << p->value << " "; p = p->next; } cout << endl; ``` 这样就可以遍历显示整个链表了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值