先是链表的定义
//单向链表的定义
struct SNode
{
int elem;
struct SNode* next;
};
下面就是单向链表的插入、删除、反转、按个反转、计算共同子串长度、合并两个有序链表、判断该链表是否有环的函数,有些不太好笔头描述
//0失败 1成功
//在指定结点node的后面插入一个结点
int insert_after(struct SNode* node, int elem)
{
assert(node != NULL);
struct SNode* newnode = (struct SNode*)malloc(sizeof(struct SNode));//给新结点分配内存
if(newnode == NULL) //创建失败返回失败
return 0;
newnode->elem = elem;
newnode->next = node->next; //把node的next传给newnode
node->next = newnode; //让node的next指向newnode
return 1;
}
//删除指定结点node的后面一个结点, *elem用于接收被删除的值,可以为空
int delete_after(struct SNode* node, int* elem)
{
assert(node!=NULL); //传入的结点为NULL不运行
if(node->next == NULL) //node下一个结点为空
return 0;
struct SNode* delnode = node->next; //让delnode记录要删除的结点
if(elem != NULL) //