数据结构个人疑惑及解答

记今天的兴奋之情,当初学C的时候指针学的很鸡肋,导致现在数据结构在梦游,今天终于搞懂指针和单链表了,记录一下,督促自己自学数据结构,哎两行泪。

一直卡的问题

typedef struct node
{
	int data;
	struct node *next;
}Node,*LinkList;
一直卡住typedef,没清晰搞懂什么意思。
Node=struct node
LinkList=struct node *
结构体指针调用的两种方式
LinkList p;
(*p).data
p->data
没注意看也是疑惑好久

还有就是引用和指针的关系
void add(int *x)
{
	(*x)=(*x)+5;//x=10
}
void add(int &n)
{
	n=n+5;
}

int main()
{
	int x=5,n=5;
	add(&x);//x=10
	add(n);//n=10
	return 0;
	}
	自认为 n=*x;
	引用指向的是同一个地址,而指针存储的是指向变量的地址;*x调用指针存储地址的值。
	数据结构那本书的引用直接调用直接就是 L->data;
	本身应该是(*L)->data
----------------------------

函数的指针问题:https://baijiahao.baidu.com/s?id=1616897994801163285&wfr=spider&for=pc

今天对指针传递和引用新的困惑。查看资料后有了新的理解。

指针传递时系统会创建一个副本,只是将值传递
如fun( int *p);
	int *a;
	fun(a);
p和a的地址不一样,只是指针所存的地址一样,指向同一块内存区域,可认为是一个副本。

即&a!=&p;
但是*&a=*&p;
具体参考资料看
https://blog.youkuaiyun.com/wang386476890/article/details/82907259


而引用是对主函数参数的直接使用
如fun(int &p)
int a;
fun(a);
&p=&a;
### 数据结构学习心得与经验分享 数据结构作为计算机科学的核心基础之一,在算法设计、程序开发以及性能优化等方面起着至关重要的作用。以下是关于数据结构学习的一些经验和体会: #### 1. 基础概念的重要性 理解基本的数据结构(如数组、链表、栈、队列、树、图等)及其操作方式是学习的第一步。每种数据结构都有其特定的应用场景和优缺点,掌握这些基础知识有助于在实际问题中做出更合适的选择[^3]。 #### 2. 实践驱动学习 理论知识固然重要,但实践才是巩固所学的最佳途径。通过解决具体的编程题目来应用学到的知识点是非常有效的策略。例如,LeetCode 和 HackerRank 提供了大量的练习题,可以帮助加深对各种数据结构的理解[^4]。 ```python class Node: def __init__(self, data=None): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None def append(self, data): new_node = Node(data) if not self.head: self.head = new_node return last = self.head while last.next: last = last.next last.next = new_node ``` 以上是一个简单的单向链表实现示例,它展示了如何创建节点并将其链接在一起形成列表。这样的动手编码过程对于熟悉链表的操作非常有帮助。 #### 3. 参与社区互动 正如 Java 学习者可以通过加入开发者社区获益一样[^2],数据结构的学习也可以从与其他爱好者的交流中得到启发。无论是在线论坛还是本地聚会,都是分享想法、解答疑惑的好地方。 #### 4. 不断挑战自我 随着技能的增长,应该逐渐尝试更加复杂的问题或者项目。比如构建自己的哈希表实现,或是研究红黑树的具体机制。这种不断超越当前水平的努力会极大地促进个人成长[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值