链表:
- 链表的基本单元是节点。
- 节点分为两部分,数据域和指针域,所以节点为结构体变量类型
struct node
{
int data;
struct node* p_next;
}
struct node* createnode(void);
void move_node(struct node* node);
bool empty_node(struct node* node);
int main()
{
struct node* begin_node;
begin_node=createnode();
move_node(begin_node);
return 0;
}
创建链表
struct node* createnode()
{
int len;
int i;
int val;
struct node* p_head=(struct node*)malloc(sizeof(struct node));
if(p_begin==NULL)
{
printf("error");
exit(-1);
}
struct node* p_tail=p_head;
p_tail->p_next=NULL;
printf("please input the number of the linkst");
scanf("%d",&len);
for(;i<=len;i++)
{
printf("please input the value for the %dlink",i);
scanf("%d",&val);
struct node* p_new=(struct node*)malloc(sizeof(struct node));
if(p_new==NULL)
{
printf("error");
exit(-1);
}
p_new->data=val;
p_tail->p_next=p_new;
p_new->p_next=NULL;
p_tail=p_new;
}
return p_head;
}
修改节点的值
void change(struct node* p_node,int n,int val)
{
struct node* p_node2;
int i=0;
while(i<n)
{
i++;
p_node2=p_node2->p_next;
}
if(p_node2=NULL)
{
printf("error");
exit(-1)
}
else
{
p_node2->data=val;
}
}
删除节点:把要删除的节点的指针域传给 前一个节点的指针域
void empty_link(struct node* p_node ,int n)
{
struct node* p_temp;
struct node* p_delete=p_node;
int i=0;
while(i<n && p_delete==NULL)
{
p_temp=p_delete;
p_delete=p_delete->p_next;
i++
}
if(p_delete!=NULL)
{
p_temo->p_next=p_delete->p_next;
}
else
{
printf("errot");
exit(-1);
}
}
添加节点:
void tianjian(struct node* p_node, int n, int val)
{
//同上,找到第n-1个节点,把指针域传给插入的节点,
// 插入节点的指针域传到下一节点
//需要做的只是循环一下找到第n-1个节点和第n+1个节点。
}