单链表//插入删除

#include<iostream>
using namespace std;
typedef struct lnode
{
	int data;
	lnode* next;
}lnode, * linklist;
void creatlist_r(linklist& l, int n)//尾插法
{
	l = new lnode;
	l->next = NULL;
	lnode* r = l;
	for (int i = 0; i < n; i++)
	{
		linklist p = new lnode;
		cin >> p->data;
		p->next = NULL;
		r->next = p;
		r = p;
	}
}
void pr_(linklist l)
{
	lnode* p = l->next;
	while (p)
	{
		cout << p->data << "  ";//输出格式必须这样!!
		p = p->next;
	}
}
int insert(linklist& l, int n, int e)
{
	lnode* p = l;
	linklist x;
	int i = 1;
	while (p && i < n)
	{
		p = p->next; ++i;
	}
	if (!p || i > n)return 0;
	x = new lnode;
	x->data = e;
	x->next = p->next;
	p->next = x;
	return 0;
}
int delete_list(linklist& l, int n)
{

	linklist p, q;
	int j = 1;
	p = l;
	while (p->next && j < n)//或while (p&& j < n)
	{
		p = p->next; ++j;
	}

	if (!p->next && j > n)return 0;// 或者 if (!p&& j > n)return 0;
	q = p->next;
	p->next = q->next;
	delete q;
	return 1;
}
int main()
{
	linklist haha;
	int n, a, e;
	int x;
	cout << "请输出要输入的个数:";
	cin >> n;
	creatlist_r(haha, n);
	pr_(haha);
	cin >> a >> e;
	insert(haha, a, e);
	pr_(haha);
	cin >> x;
	delete_list(haha,x);
	pr_(haha);
}


发布了38 篇原创文章 · 获赞 2 · 访问量 1203

猜你喜欢

转载自blog.csdn.net/weixin_44811068/article/details/102995839