C语言的亮点是指针,指针学的如何,写个链表就可以看出来:
一、单向链表
1,节点定义:
typedef struct NODE {
struct NODE *next;
int value;
}Node;
2,插入节点到一个有序链表中
#define FALSE 0
#define TRUE 1
int insert(Node **firstnode, int value)
{
Node *cur;
Node *new;
while( (cur = *firstnode ) != NULL && cur->value < value )
firstnode = &cur->link;
new = (Node*)malloc( sizeof(Node) );
if (new == NULL)
return FALSE;
new->value = value;
new->next = cur;
*firstnode = new;
return TRUE;
}
对于三种情况:空表(firstnode == NULL)、链表中有节点的数据>value(这时是一个前插法的操作)、所有数据都比value小(这时新的节点只能加到最后),该代码均可行。,
3,删除单链表中的某个节点(找到符合条件的节点后删除,不再继续操作)
void delete( Node **firstnode, int value)
{
Node *cur;
for (; *firstnode ;)
{
cur = *firstnode;
if (cur->value == value)
{
*firstnode = cur->next;
free(cur);
}
else
firstnode = &cur->next;
}
return;
}
未完。。。。。