单链表的创建和删除(带头节点

#include
using namespace std;
int a;

typedef struct Node {
	int data;//数据域
	Node* next;//指针域
}Node;
typedef Node* List;//定义线性表

void tailinsert(List& h) {
	//尾插法建立线性表
	List tail;//建立一个尾指针
	h = new Node;//给链表创建一个空的头
	h->next = NULL;//h的下一个指向是空
	tail = h;
	int x;
	while (cin >> x && x) {
		List p = new Node;
		p->data = x;
		p->next = NULL;
		tail->next = p;
		tail = p;
	}
}

void dele(List& h) {
	//实现链表的删除功能
	//删除数据为a的
	List prev, p;//
	prev = h;
	p = h->next;
	while (p) {
		if (p->data == a) {
			p = p->next;
			prev->next = p;
		}
		else {
			prev = prev->next;//prev后移
			p = p->next;//p进行后移
		}
	}
}

void prin(List& h) {
	for (List i = h->next; i != NULL; i = i->next) {
		cout << i->data << " ";
	}
}

int main() {
	List h;//创建一个线性表
	tailinsert(h);
	cin >> a;
	dele(h);
	prin(h);
	return 0;
}

测试运行:
单链表的创建和删除(带头节点_第1张图片

你可能感兴趣的:(算法,c++,c语言,数据结构)