首先创建好一个节点
1
2
3
4
5
6
7
8
9
10
11
12
|
typedef struct node {
int date;
struct node* next;
}*PNODE;
PNODE creatnode( int date )
{
PNODE newnode = (PNODE) malloc ( sizeof ( struct node));
assert (newnode);
newnode->next = NULL;
newnode->date = date;
return newnode;
}
|
其次创建一个统计节点属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
struct List {
struct node* pronode; //这只是一个类型
struct node*tailnode;
int size;
};
//创建统一链表属性的list
//用来统计链表的(size)节点数
//head和tail用来统计链表的表头和表尾
struct List* creatlist()
{
struct List* list = ( struct List*) malloc ( sizeof ( struct List));
assert (list);
list->pronode = NULL;
list->tailnode = NULL;
list->size = 0; //初始化
return list;
}
|
增加节点
用表头插入的方法插入节点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
void insertbyhead( struct List* list, int date)
{
PNODE newnode = creatnode(date);
if (list->size == 0)
{
list->pronode = list->tailnode = newnode;
}
else
{
newnode->next = list->pronode;
list->pronode = newnode;
}
list->size++;
}
|
删除节点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
//表头删除
void deletehead( struct List* list)
{
PNODE next = list->pronode->next;
free (list->pronode);
list->pronode = next;
}
//表尾删除
void deletetail( struct List* list)
{
PNODE pmove = list->pronode; //定义一个移动指针
//目的找到表尾指针
if (list->size == 0)
{
printf ( "无法删除" );
return ;
}
while (pmove->next != list->tailnode)
{
pmove = pmove->next;
}
pmove->next = NULL; //表尾指针前面一个下一个指向null
free (list->tailnode);
list->tailnode = pmove;
}
|
以上就是C++数据结构链表基本操作示例过程的详细内容,更多关于C++数据结构链表基本操作的资料请关注服务器之家其它相关文章!
原文链接:https://blog.csdn.net/weixin_56366633/article/details/120181283