您的位置:首页 > 其它

链表的建立、删除节点、侧长和打印;

2012-08-28 15:07 316 查看
/*
*链表的建立、删除节点、侧长和打印;
*/

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

struct LinkNode
{
int data;
struct LinkNode* next;
};

typedef LinkNode* LinkList;
//
LinkNode* AddNode(LinkNode* p,int data);
//
int list_length(LinkList head);
//
void list_print(LinkList head);
//
void list_delete_node(LinkList head,int num);
//
void list_reverse(LinkList head);
//
LinkNode* list_middle(LinkList head);

int main(void)
{
LinkList L1=(LinkNode*)malloc(sizeof(LinkNode));
LinkNode*pTemp=L1;
for(int i=0;i<10;i++)
{
pTemp=AddNode(pTemp,i);

}
int temp=list_length(L1);
printf("the length of L1 is %d\n",temp);
list_print(L1);
//  list_delete_node(L1,8);
// list_reverse(L1);
//  temp=list_length(L1);
//  printf("the length of L1 is %d\n",temp);
//  list_print(L1);
LinkNode*pr=list_middle(L1);
printf("the middle node of L1 is %d\n",pr->data);
system("pause");
return 0;

}
//
LinkNode* AddNode(LinkNode* p,int data)
{
LinkNode* pNode=(LinkNode*)malloc(sizeof(LinkNode));
pNode->data=data;
pNode->next=0;
p->next=pNode;
return pNode;
}
//
int list_length(LinkList head)
{
int length=0;
if(head==0) return length;
LinkList p=head->next;
while(p)
{
length++;
p=p->next;
}
return length;
}
//
void list_print(LinkList head)
{
if(head)
{
LinkList temp=head->next;
while(temp)
{
printf("%d\n",temp->data);
temp=temp->next;
}
}

}
void list_delete_node(LinkList head,int num)
{
if(head)
{
LinkNode* p,*q;
p=head;
q=head->next;
while(q)
{
if(q->data==num)
{
p->next=q->next;
free(q);
q=p->next;
}
else
{
p=q;
q=p->next;
}
}
}
}
//链表逆置
void list_reverse(LinkList head)
{
LinkList p1,p2,p3;

if(head)
{
if(head->next && head->next->next)
{
p2=head->next;
p3=p2->next;
while(p3)
{
p2->next=p1;
p1=p2;
p2=p3;
p3=p3->next;
}
p2->next=p1;
p1=p2;
}
head->next=p1;

}
}
//遍历一次求获取位于中间位置的那个节点
LinkNode* list_middle(LinkList head)
{

if(head && head->next)
{
LinkList p,q;
p=q=head->next;

while(q)
{
p=p->next;
if(q->next)
{
q=q->next->next;
}
else break;
}
return p;

}
else
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐