单向链表,C语言.cpp文件,需轻度debug

//单向链表
#define _CRT_SECURE_NO_WARNINGS_
#include<stdio.h>
#include<math.h>

#define ElemType int
#define temp_ElemType d//这个在使用的时候需要更改
#define ERROR -1


typedef struct po {
	ElemType data;
	struct po *next;
}Node ;//定义单向链表的结构体


Node* Init_List() {
	Node* p = (Node*)malloc(sizeof(Node));
	p->next = NULL;//头结点指向null,便于之后的鲁棒性判定
	scanf("%temp_ElemType", &p->data);
	return p;
}//定义头结点
void Destory_List(Node* p) {
	int k = 0;
	Node* temp = p;
	for (k = 1; temp->next; k++) temp = temp->next;
	while (k > 1) {
		temp = p;
		while (temp->next) temp = temp->next;
		free(temp);//进行多次循环,每次循环到最后一个的时候删掉最后一个
		k--;
	}//删的只剩下节点p的时侯退出
	free(p);//删除头结点
}
Node* Clear_List(Node* p) {
	int k = 0;
	Node* temp = p;
	for (k = 1; temp->next; k++) temp = temp->next;
	while (k > 1) {
		temp = p;
		while (temp->next) temp = temp->next;
		free(temp);//进行多次循环,每次循环到最后一个的时候删掉最后一个
		k--;
	}//删的只剩下节点p的时侯退出
	p->next = NULL;//初始化头结点的next
}
int List_empty(Node* p) {
	if (p->next) return 0;
	else return 1;
}//如果非空返回1,反之返回0;
Node* Insert_Node(Node* p, int i) {
	Node* q = (Node*)malloc(sizeof(Node));
	scanf("%temp_ElemType", q->data);
	Node* temp = p;
	int k = 0;
	for (k = 0; k < i - 1 && temp->next != NULL; k++) temp = temp->next;//这个时候temp指向了插入位置的前一个节点
	if (k != i - 2) exit(ERROR);//如果i的位置大于当前链表长度,返回-1,数据非法。
	else {
		q->next = temp->next;
		temp->next = q;
		return p;
	}
}//只允许在头结点之后插入,插入在特定的位置,返回值为头结点。
Node* Delete_Node(Node* p, int i) {
	Node* temp = p;
	int k = 0;
	for (k = 0; k < i - 1 && temp->next != NULL; k++) temp = temp->next;//这个时候temp指向了插入位置的前一个节点
	if (k != i - 2) exit(ERROR);//如果i的位置大于当前链表长度,返回-1,数据非法
	else {
		temp->next = temp->next->next;
		free(temp->next);
		return p;
	}
}//删除指定位置的数据并释放内存。
ElemType* Get_Elem(Node* p, int i, ElemType* e) {
	Node* temp = p;
	int k = 0;
	for (k = 0; k < i - 1 && temp->next != NULL; k++) temp = temp->next;//这个时候temp指向了插入位置的前一个节点
	if (k != i - 2) exit(ERROR);//如果i的位置大于当前链表长度,返回-1,数据非法。
	else {
		*e = temp->next->data;
		return e;
	}
}//查询链表的第i个结点的数据。

int main() {
	printf("-1");
	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值