c语言链表操作

 

#include"stdio.h"
#include"stdlib.h"

typedef struct Node
{
	int data;
	struct Node *next;
}list,*ptr_list;

typedef struct List
{
	int len;
	ptr_list head;
}List; 

bool delete_node(List *L,int pos)
{
	if(pos==0)
	{return 0;}
	ptr_list p,q;
	int i;
	p=L->head;
	for(i=0;i<pos;i++)
	{
		q=p;
		p=p->next;
    }
	q->next=p->next;
	L->len--;
	return 1;
}


bool insert_node(List* L,int data,int pos)
{
	ptr_list current=(list*)malloc(sizeof(list));
	current->data=data;
	if(pos==0)
	{return 0;}
	ptr_list p,q;
	int i;
	p=L->head;
	for(i=0;i<pos;i++)
	{
		q=p;
		p=p->next;
    }
    q->next=current;
    current->next=p;
    return 1;
}

bool update(List* L,int data,int pos)
{
	
	if(pos==0)
	{return 0;}
	ptr_list p;
	int i;
	p=L->head;
	for(i=0;i<pos;i++)
	{
        p=p->next;
    }
    p->data=data;
    return 1;
}

void inti(List *L,int len)
{ 
     int i;
	 L->head=(list *)malloc(sizeof(list));
	 L->len=len;
	 ptr_list p=L->head;
	 for(i=0;i<len;i++)
	 {
		 ptr_list temp=(list *)malloc(sizeof(list));
		 p->next=temp;
		 temp->data=i;
		 p=temp;
	 }

}
void print(List L)
{
	int len=L.len;
	int i;
	ptr_list p=L.head;
    p=p->next;
	for(i=0;i<len;i++)
	{
		printf("%d ",p->data);
		p=p->next;
	}
	printf("\n");
}


void main()
{

	List L;
	inti(&L,10);
	print(L);
	delete_node(&L,2);
	print(L);
	insert_node(&L,5555,2);
	print(L);
	update(&L,4444,3);
	print(L);
				
}

教学版 链表操作 呵呵。。闲来之作 欢迎板砖,水军。

 

posted @ 2011-01-11 18:15  奔跑的兔子  阅读(568)  评论(0编辑  收藏  举报