.试分别用顺序表和单链表作为存储结构,实现将线性表(a0,a1,...an

2020-07-30 科技 85阅读
//单链表
#include
#include
#define null 0
typedef struct node
{
elemtype data;
struct node *next;
}node,*linklist;
void creatfromhead(linklist L)
{/*L是已经初始化好的空链表的头指针,通过键盘输入表中元素值,利用头插法建带头结点
单链表L
时间复杂度为O(n)(n为链表元素的个数)*/
int data;
node *p;
for(scanf("%d",&data);data!=0;)
{
p=(node *)malloc(sizeof(node));
p->data=data;
p->next=L->next;
L->next=p;
scanf("%d",&data);
}
printf("带头结点的单链表创建完毕!\n");
}
//顺序表
#include
#define maxsize 100
typedef struct
{
elemtype elem[maxsize];
int last;
}seqlist;
int inslist(seqlist *L,int i,elemtype e)
{/*在顺序表L中第i个位置插入一个元素e。尾元素后面那个单元的下标为L->last+1,其
序号为L->last+2?
i的合法取值范围是1<=i<=L->last+2
时间复杂度为O((L->last+1)/2)*/
int n;
if(i<1||i>L->last+2)
{
printf("输入的位置不合法!\n");
return 0;
}
else if(L->last+2>maxsize)
{
printf("原顺序表已满!\n");
return 0;
}
else
{
for(n=L->last+1;i<=n,n--)
L->elem[n]=L->elem[n-1];
L->elem[i-1]=e;
L->last++;
return 1;
}
}
//你自己用适合的类型填充就行了,你的题目也没有提示用什么类型,所以就这么写了
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com