C语言数据结构--(单链表)
来源:互联网 发布:脆弱的变化知乎 编辑:程序博客网 时间:2024/05/17 08:09
线性表的链式存储实现。
#include <stdio.h>
#include <stdlib.h>
typedef int datatype; /*datatype可为任意类型,这里假设为int*/
typedef struct node
{
datatype data;
struct node *next;
}Linklist;
/*尾插法建立带头节点的单链表*/
Linklist *CreateList()
{
char ch;
Linklist *head,*s,*r;
head = (Linklist*)malloc(sizeof(Linklist)); /*生成头节点*/
r = head; /*尾指针初值指向头节点*/
ch = getchar();
while(ch != '$') /**/
{
s = (Linklist*)malloc(sizeof(Linklist));
s->data = ch;
r->next = s; /*非空表,新节点*s插入到尾节点*r之后*/
r = s; /*尾指针r指向新的表尾*/
ch = getchar();
}
r->next = NULL;
return head; /*返回单链表头指针*/
}
/*查找运算,按序号查找,在带头节点的单链表head中查找第i个节点,若找到则返回该节点的存储位置*/
Linklist *Get_Innum(Linklist *head,int i)
{
int j = 0;
Linklist *p;
p = head;
while (p->next != NULL && j < i)
{
p = p ->next;
j ++;
}
if (i == j)
{
return p;
}
else
{
return NULL;
}
}
/*按值查找,在带头节点的单链表head中查找其节点值等于key的节点*/
Linklist *Loacate_Key(Linklist *head,datatype key)
{
Linklist *p;
p = head->next; /*从开始节点比较*/
while (p != NULL)
{
if (p->data != key)
{
p = p->next;
}
else
{
break;
}
}
return p;
}
/*插入运算,后插操作。将值为x的新节点插入*p之后*/
void Insert_After(Linklist *p,datatype x)
{
Linklist *s;
s = (Linklist *)malloc(sizeof(Linklist));
s->data = x;
s->next = p->next;
p->next = s;
}
/*在单链表上实现线性表的插入运算,该运算生成一个值为x的新节点,并插入到链表中第i个节点之前*/
void Insert(Linklist *L,datatype x,int i)
{
Linklist *p;
int j;
j = i - 1;
p = Get_Innum(L,j);
if (p == NULL )
{
printf("Error\n");
}
else
{
Insert_After(p,x);
}
}
/*删除运算*/
void Delete_After(Linklist *p)
{
Linklist *r;
r = p->next;
p->next = r->next;
free(r);
}
void Delete(Linklist *L,int i)
{
Linklist *p;
int j = i -1;
p = Get_Innum(L,j);
if (p != NULL && p->next != NULL)
{
Delete_After(p);
}
else
{
printf("Error\n");
}
}
- C语言数据结构--(单链表)
- 数据结构--单链表(C语言)
- C语言数据结构-单链表
- 数据结构(C语言)
- 数据结构之单链表(C语言实现)
- 数据结构(C语言)线性表 -单链表
- 【数据结构】数据结构C语言的实现(单链表)
- 数据结构 单链表运用 C语言
- 数据结构.单链表(C语言实现)
- 数据结构--单链表c语言实现
- 【数据结构】C语言实现单链表
- c语言数据结构--单链表操作
- C语言-数据结构-单链表倒置
- 【C语言数据结构】循环单链表
- c语言数据结构之单链表
- 链表(C语言数据结构)
- 目录(数据结构C语言)
- 数据结构(C语言描述)
- MyEclipse中修改Content Assist
- hibernate之no currentSessionContext config!
- According to TLD or attribute directive in tag file, attribute value does not accept any expressions
- hibernate之1+N问题
- 话说一次死循环的分析解决...
- C语言数据结构--(单链表)
- Hadoop手动启动过程
- 网络语音传输
- spring 3.0之helloworld
- Servlet采用forward出现中文乱码问题解决
- 宏的妙用
- spring之事务管理
- Python 常见的17个错误分析
- Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2所需要的jar包总结