10.12技术沉淀


```cpp
/**
编写程序实现ADT表的定义,及常用操作:
1)	判断表是否为空;
2)	获取第i个节点的内容
3)	删除
4)	插入
*/

#include <iostream>
using namespace std;

struct ListNode{
	//当前节点的值
	int val;
	//指向下一个节点的指针
	struct ListNode* next;
	//初始化节点值和指针指向空
	ListNode(int x) :
		val(x), next(NULL){
	}
};

int main(){
	int num;
	cout<<"依次输入链表元素,输入‘\\n‘结束"<<endl;
	cin >> num;
	//头指针指向第一个输入的num
	ListNode* head = new ListNode(num);
	//再建一个指针p来遍历链表
	//cout<<*(int*)head<< endl;
	ListNode* tail = head;
	//利用尾插法创建一个链表
	while(cin>>num){//输入不为\n一直循环
		ListNode* q = new ListNode(num);
		tail->next = q; 
		tail = tail->next;
	}
	ListNode* m= head;
	while(m != nullptr){
			cout<<m->val;
			m = m->next;
	}
	return 0;
}

人生苦短
1.链表
卡在哪里?
首先宏观框架不明了,高屋建瓴没有的
其次细节实现不明了,脚踏实地没有的
谈收获:
while(cin>>num)的用法,检测输入不为空,持续循环
ListNode* m= head; m是个地址,*m是值
但 ListNode* m相当于实例化了,通过m也可以来调用链表里的数据指针

ListNode* m= head;
	while(m != nullptr){
			cout<<m->val;
			m = m->next;
	}`
	这段代码是先把已经建好的链表头指针给了m,然后m去遍历链表,在检测到m=nullptr,也就是尾指针指向空的时候。
接下来:
实现
/**
编写程序实现ADT表的定义,及常用操作:
1)	判断表是否为空;
标记或者遍历加1
2)	获取第i个节点的内容
传递位置,怎么定位?
3)	删除
指向下一个节点,释放空间
4)	插入
指针指向改变
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值