链表使用总结

来源:互联网 发布:厨具收纳 知乎 编辑:程序博客网 时间:2024/04/30 16:19
在创建链表时需要逐个创建结点,创建结点包括3点:
(1),为结点分配内存单元
(2),把数据存储到结点中
(3),把结点插入到链表中
遍历链表
删除结点也包含3点:
(1),定位要删除的结点
(2),改变前一个结点,从而使它“绕过”删除结点
(3),调用free函数收回删除结点占用到内存空间
#include<stdio.h>
#include<stdlib.h>
typedef struct{
int num;
char *name;
}part;

int main(void){
struct node{
int num;
char *name;
};
struct node node1;
struct node * new_node;
/*******创建结点******/
struct linknode{
int value;
struct linknode * next;
};
struct linknode *first=NULL;
struct linknode *linknode1;
linknode1=(struct linknode *)malloc(sizeof(struct linknode));
linknode1->value=100;
linknode1->next=first;
first=linknode1;
struct linknode * linknode2;
linknode2=(struct linknode *)malloc(sizeof(struct linknode));
linknode2->value=200;
linknode2->next=first;
first=linknode2;
/*******遍历链表*******/
while(first!=NULL){
printf("linknode:%d\n",first->value);
first=first->next;

}
/********删除结点********/
struct linknode *curr;
struct linknode * pre;
curr=first;
pre=NULL;
while(curr!=NULL&&curr->value!=100)
{
pre=curr;
curr=curr->next;
}
if(curr)
    pre->next=curr->next;
free(curr);


part part1;
part1.num=25;
part1.name="zhang";

node1.num=10;
node1.name="zheng";
printf("1.%s has %d dollars.\n",node1.name,node1.num);
new_node=&node1;
(*new_node).num=15;// .
printf("2.%s has %d dollars.\n",node1.name,node1.num);
new_node->num=20;// ->
printf("3.%s has %d dollars.\n",node1.name,node1.num);

printf("4.%s has %d dollars.\n",part1.name,part1.num);
return 0;

}
/*

在创建链表时,需要追个创建结点,创建结点包括3点:
(1),为结点分配内存单元
(2),把数据存储到结点中
(3),把结点插入到链表中
删除结点也包含3点:
(1),定位要删除的结点
(2),改变前一个结点,从而使它“绕过”删除结点
(3),调用free函数收回删除结点占用到内存空间

*/
0 0
原创粉丝点击