链表(建立.cpp文件)

#include <stdio.h>
#include <stdlib.h>


#define IS_FULL(ptr)  (!(ptr))
// 建立一个整数的链表
typedef struct list_node *list_pointer;
typedef struct list_node {
int data;
list_pointer link;
};
list_pointer ptr = NULL;

//建立二结点的表
list_pointer create()
{
list_pointer first, second;
first = (list_pointer) malloc(sizeof(list_node));
second = (list_pointer) malloc(sizeof(list_node));

second->link = NULL;
second->data = 20;
first->data = 10;
first->link = second;
return first;
}

//在某个结点后插入操作
void insert(list_pointer *ptr, list_pointer node)
{
list_pointer temp;
temp = (list_pointer) malloc(sizeof(list_node));

if (IS_FULL(temp))
{
fprintf(stderr, "The memory is full\n");
exit(1);
}
temp->data = 50;
if (*ptr)
{
temp->link = node->link;
node->link = temp;
}
else
{
temp->link = NULL;
*ptr = temp;
}
}

//删除操作

void deleteitem(list_pointer *ptr, list_pointer trail, list_pointer node)
{
if (trail)
{
trail->link = node->link;
}
else
{
*ptr = (*ptr)->link;
}
free(node);
}

// 表的输出
void print_list(list_pointer ptr)
{
printf("The list contains: ");
for(; ptr; ptr = ptr->link)
printf("%4d", ptr->data);
printf("\n");
}

void main()
{
//获得二结点链表指针
ptr = create();
print_list(ptr);

//在第一个结点后插入
list_pointer first = ptr;
insert(&ptr, first);
print_list(ptr);

//删除第二个结点
list_pointer second = ptr->link;
deleteitem(&ptr, first, second);
print_list(ptr);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值