您的位置:首页 > 理论基础 > 数据结构算法

数据结构实验一(2)

2015-11-01 00:17 267 查看
单链表的操作

① 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。

② 实现该线性表的遍历。

③ 在该单链表的第i个元素前插入一个整数。

④ 删除该单链表中的第i个元素,其值通过参数将其返回。

#include<stdio.h>
#include<stdlib.h>
typedef struct{
int *a;
int length;
int listsize;
}sq_list;
void initList(sq_list &p)
{
int n;
scanf("%d",&n);
p.length=n;
p.a=(int*)malloc(100*sizeof(int));  //开辟最大存储空间
if (!p.a)
exit(0);
for (int i=1;i<=n;i++)
scanf("%d",&p.a[i]);
}
void bianli(sq_list p)      //遍历一遍,输出数值
{
int i;
for (i=1;i<=p.length;i++)
printf("%d ",p.a[i]);
printf("\n");
}
void search(sq_list p,int value)
{
int i=0;
while (i<=p.length&&p.a[i]!=value)
i++;
if (i>p.length)
printf("该表中没有此值.\n");
else
printf("位置是%d\n",i);
}
void insert(sq_list &p,int value,int i)
{
int j;
if (i<1||i>p.length+1)
exit(0);
if (p.length>=p.listsize)
p.a=(int*)realloc(p.a,(p.listsize+100)*sizeof(int));
if (!p.a)
exit(0);
p.length++;
for (j=p.length;j>=i;j--)
p.a[j+1]=p.a[j];
p.a[i]=value;
}
void dele(sq_list &p,int i,int &b)
{
int j;
if (i<1||i>p.length)
exit(0);
b=p.a[i];
for (j=i;j<=p.length-1;j++)
p.a[j]=p.a[j+1];
p.length--;
bianli(p);
printf("%d\n",b);
}
int main()
{
int i,value,b;
sq_list p;
initList(p);
bianli(p);
printf("进行查找:\n");
scanf("%d",&value);
search(p,value);
printf("进行插入:\n");
scanf("%d%d",&i,&value);
insert(p,value,i);
bianli(p);
printf("进行删除:\n");
scanf("%d",&i);
dele(p,i,b);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: