一,数据结构——链表全操作:
链表形式:
其中,每个节点(Node)是一个结构体,这个结构体包含数据域,指针域,数据域用来存放数据,指针域则用来指向下一个节点;
特别说明:对于单链表,每个节点(Node)可以通过指针域(Node *next)来找到下一个节点,但却不能够找到上一个节点;
只需要知道头结点就可以确定整个链表;
对链表进行的操作一般都需要遍历链表,而链表结束的标志为NULL(要么next指针为空,要么头结点为空);
若要断开两个节点联系,要先保存下个节点,否则后面的节点无法找到;
关于链表逆序,思想为将指针方向对调,最后头节点为原链表最后一个节点;
以下为链表增,删,改,查,逆序,排序的函数实现:
link.h
1 #ifndef LINK_H_INCLUDED 2 #define LINK_H_INCLUDED 3 #include <stdio.h> 4 #include <stdlib.h> 5 #define datatype int 6 7 struct node 8 { 9 int num; 10 int data; 11 struct node* next; 12 }; 13 14 typedef struct node Node; 15 16 void backaddnode(Node **ppnode, int num, datatype data);//增加节点 17 Node *backaddnodeA(Node *pnode, int num, datatype data);// 18 void showallnode(Node *pnode);//显示所有的节点 19 Node *searchfirst(Node *pnode, int num);//查询 20 int change(Node *pnode, int oldnum, int newnum);//修改失败返回0,成功返回1 21 Node *rev(Node *pnode);//链表的逆转 22 Node *del(Node *pnode, int num);//删除 23 Node *insert(Node *pnode, int findnum, int newnum, datatype data);//实现插入,前面插入 24 void sort(Node *pnode, char ch);//ch==> ch==< 25 26 27 #endif // LINK_H_INCLUDED