- 論壇徽章:
- 0
|
回復(fù) 4# lxyscls
我改進(jìn)了,知道咋用了
#include <stdlib.h>
#include <stdio.h>
#define False 0
#define True 1
typedef struct NODE
{
struct NODE *link;
int value;
} Node;
Node *sll_insert(register Node *linkp, int new_value)
{
register Node *current;
register Node *new;
// 尋找正確的插入位置,方法是按順序訪問鏈表,直到到達(dá)其值大于或等于新插入值的節(jié)點
while ((current = linkp) != NULL && current->value < new_value)
linkp = current->link;
// 為新節(jié)點分配內(nèi)存,并把新值存儲到新節(jié)點中,如果失敗,返回False
new = (Node *)malloc(sizeof(Node));
if (new == NULL)
return False;
new->value = new_value;
// 把新節(jié)點插入到鏈表中,并返回True
new->link = current;
linkp = new;
return linkp;
}
int main(void)
{
Node a, b, c, *linkp;
a.value = 5;
a.link = &b;
b.value = 10;
b.link = &c;
c.value = 15;
c.link = NULL;
linkp = (Node *)malloc(sizeof(Node));
linkp = &a;
sll_insert(linkp, 12);
printf("linkp: %d\n", linkp->value);
return 0;
}
|
|