第2章:数据结构:线性表

线性表(数据结构)

掌握知识:

  1. 结构体
  2. 指针
typedef struct Node{
	int data;
	struct Node* next;
}NODE,*PNODE;
顺序表链表
方式随机存取顺序存取
查找O(1)O(n)
删除 1 n + 1 \frac {1}{n+1} n+11 ∑ i = 0 n + 1 \sum_{i=0}^{n+1} i=0n+1(n-i+1)= n 2 \frac {n}{2} 2nO(1)(确定删除元素位置后)
插入 1 n \frac {1}{n} n1 ∑ i = 0 n \sum_{i=0}^{n} i=0n(n-i)= n − 1 2 \frac {n-1}{2} 2n1O(1)(确定插入位置后)

链式表示和实现(是否有头结点)

  • 线性链表
/*
 删除
	PNODE temp=p->next;
	p->next=temp->next;
	free(temp);
*/
bool deleteList(PNODE s,int i,int* val){
	int j=0;
	PNODE p=s;
	while(p->next&&j<i-1){
		p=p->next;
		j++;
	}
	PNODE temp=p->next;
	*val=temp->data;
	p->next=p->next->next;
	free(temp);
	return true;
}
/*
插入
	s->next=p->next;
	p->next=s;
*/
bool insertList(PNODE L,int i,int val){
	PNODE p=L;
	int j=0;
	PNODE s=(PNODE)malloc(sizeof(PNODE));
	s->data=val;
	while(p->next&&j<i-1){
		p=p->next;
		j++;
	}
	s->next=p->next;
	p->next=s;
	return true;
}
  • 循环链表

  • 双向链表

示例:

  • 将两个有序链表合并为一个
  • 一元多项式的表示及相加
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值