一,数据结构——链表全操作:

     链表形式:

        C语言链表全操作(增,删,改,查,逆序,递增排序,递减排序,链式队列,链式栈)

     其中,每个节点(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
View Code

相关文章: