#include <stdio.h>
#include <stdlib.h>
#define N 5
/*N 假定数组长度为5*/
typedef struct snode
{
int data;
struct snode *next;
} SNODE; /*第一步,添加链表头信息*/
SNODE *createhead(int a[])
{
SNODE *h,*p,*q;
/*q为上一节点,p为当前节点*/
int i;
q=(SNODE *)malloc(sizeof(SNODE));
h=q;
for(i=;i<N;i++)
{
p=(SNODE *)malloc(sizeof(SNODE));
p->data = a[i];
q->next=p;
q=p;
}
q->next=;
return h;
} /*第二步打印链表中的元素*/
void showstars(SNODE *h)
{
SNODE *p;
p=h->next;
while(p)
{
printf("%d 其地址为 %x\n",p->data,p);
p=p->next;
}
} /*第三步删除/回收节点*/
void revokeresource(SNODE *h)
{
SNODE *p,*q;
p=h->next;
while(p)
{
q=p->next;
printf("哦,no~~~%d被回收了\n",p->data);
free(p);
p=q;
}
free(h);
} /*添加一个节点,目标在值为4的结点前添加一个结点,如果值为4的节点不存在,则在末尾添加一个结点*/
void insert(SNODE *h,int a,int d)
{
SNODE *p,*q;
SNODE *s;
s=(SNODE *)malloc(sizeof(SNODE));
s->data=d;
q=h;p=h->next;
while(p)
{
if(p->data==a) break;
q=p;p=p->next;
}
s->next=q->next;
q->next=s;
showstars(h);
} /*删除值为targetdta的链接节点*/
void collectnode(int targetdata,SNODE *h)
{
SNODE *p,*q;
p=h->next;
q=h;
while (p)
{
if(p->data==targetdata)
{
break;
}
q=p;p=p->next;
}
if(p)
{
q->next=p->next;
free(p);
}
} void main()
{
int saiwa[N]={,,,,};
SNODE *head;
head=createhead(saiwa);
showstars(head);
printf("================*在数组的值4前插入节点值8=================\n");
insert(head,,); printf("================*回收节点4=================\n");
collectnode(,head);
showstars(head);
}

输出结果:

最新文章

  1. C#组合查询小Demo
  2. Node 编程规范
  3. 判断IP地址的类型
  4. Sublime文本排序&amp;查找重复行&amp;删除重复行
  5. 转:CPU与内存的那些事
  6. 【PL/SQL练习】基本的PL/SQL语句
  7. jQuery中 wrap() wrapAll() 与 wrapInner()的区别
  8. What&#39;s Exposure?
  9. 安卓(android)建立项目时失败,出现Android Manifest.xml file missing几种解决方法?(总结中)
  10. 修改文件所有者 chown
  11. SonicUI在MFC中的使用
  12. 转自知乎-wifi破解
  13. Docker学习系列(二)Docker初体验
  14. RxJava操作符(02-创建操作)
  15. Linux内核中SPI总线驱动分析
  16. Servlet第五课:Cookie的使用
  17. nodejs——压缩文件_archiver
  18. python configparser配置文件解析器
  19. 使用Sigar获取服务器信息
  20. 正确的使用margin:0 auto与body{text-align:center;}实现元素居中(转)

热门文章

  1. lua 模块与包(五)
  2. Mysql:too many connect
  3. 二维状压DP经典题
  4. php验证手机号记录
  5. fiddler笔记:统计选项卡(Statistics)
  6. shell习题第13题:监控nginx进程
  7. Springboot使用外置tomcat的同时使用websocket通信遇到的坑
  8. k8s之RBAC-基于角色的访问控制
  9. sqlserver跨库操作数据
  10. C++ STL 之 set 和 pair