单链表建立、插入、逆序
2013-11-20 22:39
134 查看
//建立数据 typedef struct student { int data; struct student * next; }node; //建立单链表 node * create() { node *head,*p,*s; int x,cycle=1; head = (node *)malloc( sizeof(node) ); p=head; while(cycle) { //读入数据 printf("Please input the data:\n"); scanf("%d",&x); if(x!=0) { s=(node *)malloc( sizeof(node) ); s->data=x; p->next=s; p=s; } else cycle=0; } p->next = NULL; head=head->next; return head; }//单链表逆序
node * reverse(node * head)
{
node *p1, *p2, *p3;
if(head==NULL || head->next==NULL)
return head;
p1=head;
p2=p1->next;
while(p2)
{
p2->next = p3;
p2->next = p1;
p1=p2;
p2=p3;
}
head->next=NULL;
head = p1;
return head;
}
//单链表插入有序链表,不改变链表原有顺序
node * insert(node *head, int num)
{
node *p0, *p1, *p2;
p0=(node *)malloc(sizeof(node));
p0->data=num;
p1=head;
while(num>p1->data && p1->next!=NULL)
{ p2=p1;p1=p1->next;}
if(p1->data>=num)
{ if(p1==head)
{
p0->next = head;
head = p0;
}
else
{
p2->next=p0;
p0->next=p1;
}
}
else
{p1->next=p0;
p0->next = NULL;
}
return head;
}
//单链表删除
node * del(node *head, int num)
{
node *p1,*p2;
p1=head;
while(p1!=NULL && num!=p1->data)
{p2=p1;p1=p1->next;}
if(p1==NULL)
printf("没找到");
elseif(p1==head)
head=head->next;
else
{
p2->next=p1->next;
}
return head;
}
相关文章推荐
- 链表:检测是否有环,是否相交,删除节点,插入节点,打印节点,建立节点,节点排序,节点逆序,
- 双链表的建立,测长度,打印,插入c++代码实例及运行结果
- 双链表的建立、求长、定位、插入、删除、输出和释放(带头结点且成环状)
- c++链表 建立 输入 输出 删除结点 插入结点 释放链表 的函数
- 数据结构实验之链表二:逆序建立链表
- SDUT _2117 数据结构实验之链表二:逆序建立链表
- 链表的建立、插入和删除 - 草根编程网
- 单链表[建表、输出、插入、删除、逆序]
- SDUT OJ 数据结构实验之链表二:逆序建立链表
- 链表的建立,输出,删除,插入运算的c语言实现
- C语言——链表部分(包括节点的建立、总长度、显示链表、插入节点以及删除节点)
- [转载]C语言链表的建立、插入和删除
- 头插法建立链表--逆序输出
- 链表建立,插入,删除,释放,输出
- 【数据结构】用C++实现单循环链表的各种操作(包括头删,尾删,插入,逆序,摧毁,清空等等)
- 单链表的建立、测长、打印、删除节点、插入节点、排序、逆转
- 链表面试题(一):逆序打印链表、无头链表删除插入节点、约瑟夫环、逆置单链表
- 单链表的建立、插入、删除
- 双链表的建立,测长度,打印,插入c++代码实例及运行结果
- 建立一个带附加头结点的单链表.实现测长/打印/删除结点/插入结点/逆置/查找中间节点/查找倒数第k个节点/判断是否有环