顺序结构链表
原创yuhuarengo ©著作权
©著作权归作者所有:来自51CTO博客作者yuhuarengo的原创作品,请联系作者获取转载授权,否则将追究法律责任
/**
*用顺序存储结构实现的链表
*/
#include <stdio.h>
#include <stdlib.h>
/*链表初始化容量*/
#define initSize 50
/*表示链表的结构体*/
struct SqList
{
/*指向数据存储区域的指针*/
int *pdata;
/*当前链表的长度*/
int lenth;
/*当前链表的存储容量*/
int contain;
}list,*plist;
/*初始化链表*/
void initSqList(SqList *list);
/*链表的插入操作*/
void insert(SqList *list,int data);
/*链表的删除操作*/
void delet(SqList *list,int position);
/*获取链表指定位置的元素*/
int get(SqList *list,int position);
/*重新设置链表的容量*/
void resize(SqList *list);
int main()
{
plist = &list;
/*初始链表*/
initSqList(plist);
int i,j;
for(i=1;i<=40;i++)
{
insert(plist,i);
}
for(j=1;j<=list.lenth;j++)
{
printf("%d\n",get(plist,j));
}
printf("删除之后。\n");
delet(plist,5);
delet(plist,5);
delet(plist,5);
for(j=1;j<=list.lenth;j++)
{
printf("%d\n",get(plist,j));
}
getchar();
return 0;
}
/*初始化链表*/
void initSqList(SqList *list)
{
list->lenth = 0;
list->contain = initSize;
list->pdata = (int*)calloc(initSize,sizeof(int));
}
/*链表的插入操作*/
void insert(SqList *list,int data)
{
/*检查是否超出了容量*/
if(list->lenth >= list->contain)
{
resize(list);
}
/*插入*/
*((list->pdata)+list->lenth) = data;
++(list->lenth);
}
/*链表的删除操作*/
void delet(SqList *list,int position)
{
/*检查position是否合法*/
if(position>list->lenth)
{
printf("你输入了非法位置!");
}
else
{
int i;
for(i = position -1;i<list->lenth;i++)
{
*(list->pdata+i) = *(list->pdata+i+1);
}
}
--list->lenth;
}
/*获取链表指定位置的元素*/
int get(SqList *list,int position)
{
if( position <= list->lenth)
{
return *(list->pdata+(position-1));
}
else
{
printf("你输入了非法的位置!");
return NULL;
}
}
/*重新设置链表的容量*/
void resize(SqList *list)
{
/*分配一个新的存储空间*/
int newContain = list->contain+initSize;
int *tmp = (int *) calloc(newContain,sizeof(int));
/*复制到新的空间*/
int i;
for(i=0;i<list->lenth;i++)
{
*(tmp+i) = *(list->pdata+i);
}
/*释放*/
free(list->pdata);
list->pdata = tmp;
list->contain = newContain;
}
下一篇:我的友情链接
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【数据结构】链式家族的成员——循环链表与静态链表
【数据结构】第二章——线性表(8)详细介绍了循环链表与静态链表的相关内容……
数据结构 C语言 循环链表 静态链表 -
【数据结构】C语言实现顺序栈
【数据结构】第三章——栈、队列和数组详细介绍通过C语言实现顺序栈
数据结构 C语言 顺序栈 -
【数据结构】(2)顺序表和链表
线性表
数组 数据 顺序表 -
一、链表(链表结构)
链表
数据 链表 数组 递归 数据类型