结构体实现单链表

#include <iostream>
using namespace std;

struct MyList{
	int val;
	MyList *next;
};
//在第i个位置插入e
void ListInsert(MyList *L, int i, int *e) {
	int j = 1;	//计数器
	MyList *p;
	p = L;	//头指针给p;
	while (p && j < i) {
		p = p->next;
		j++;
	}
	if (!p || j > i) {
		throw "ERROR!";
	}
	MyList *s = new MyList;
	s->val = *e;
	s->next = p->next;
	p->next = s;
}
//delete第i个元素,并用e返回其值
void ListDelete(MyList *L, int i, int *e) {
	int j = 1;
	MyList *p = L;
	while (p && j < i) {
		p = p->next;
		j++;
	}
	if (!(p->next) || j > i) {
		throw"ERROR";
	}
	MyList *q = p->next;
	p->next = q->next;
	*e = q->val;
	free(q);
}
//查找第i个元素并用e返回值
void GetElem(MyList *L, int i, int *e) {
	int j = 1;	//计数器
	MyList *p;
	p = L->next;
	while (p && j < i) {
		p = p->next;
		j++;
	}
	if (!p || j > i) {
		throw "ERROR!";
	}
	*e = p->val;
}

int main() {
	MyList *head;	//头指针
	MyList *r;	//循环指针
	head = new MyList;
	head->next = NULL;
	r = head;
	//循环创建链表
	for (int i = 0; i < 10; i++) {
		MyList *p = new MyList;
		p->val = i;
		r->next = p;
		r = p;
	}
	r->next = NULL;

	int *e = new int(-1);	//指针初始化

	/*GetElem(head, 11, e);
	cout << *e << endl;*/

	//ListInsert(head, 4, e);
	//ListDelete(head, 10, e);

	//输出链表
	r = head->next;
	while (r) {
		cout << r->val << endl;
		r = r->next;
	}

	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值