您的位置:首页 > 其它

使用指针操作列表时,

2015-07-02 19:54 281 查看
比方在插入有序链表的过程中。普通情况下要使用俩指针来遍历,而后还要推断是否在第一个位置插入;利用指针的指针后不须要另外考虑这样的特殊情况。

代码:
#include <stdio.h>
#include <stdlib.h>

struct node{
int data;
struct node *next;
} *head;

//sorted link-list
void insert(struct node *new_node){
struct node *cur = head, *pre = NULL;
while(cur != NULL && cur->data < new_node->data){
pre = cur;
cur = cur->next;
}

new_node->next = cur;
if(pre == NULL)
head = new_node;
else
pre->next = new_node;
}

//use pointer to pointer can make things easier
void insert2(struct node *new_node){
struct node **linkp = &head;
while(*linkp !=NULL && (*linkp)->data < new_node->data){
linkp = &(*linkp)->next;
}

new_node->next = *linkp;
*linkp = new_node;
}

void show(){
struct node *p = head;
while(p){
printf("%d , ", p->data);
p = p->next;
}
}

int main(){
int i;
struct node ns[] = {
{80, NULL},
{8, NULL},
{1, NULL},
{10, NULL},
};
for(i = 0; i < 4; i++){
insert2(&ns[i]);
}
show();

return 0;
}


下一步看hlist中对应的这样的思想。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: