#include<stdio.h>
#include<malloc.h>
#define null 0
typedef struct
{
int data;
lnode *next;
}lnode,*linklist;
/*建表子函数*/
void creat(linklist &l,int n)
{输入n个元素建立后进先出的单链表l
linklist p;
l=(linklist)malloc(sizeof(lnode);
l->next=null;
for(i=n;i>0;i--)
{p=(linklist)malloc(sizeof(lnode))
scanf(&(p->data));
p->next=l->next;
l->next=p;
}
}
2. 遍历子函数
void travser(linklist l)
{//依次输出单链表l的各个元素
p=l->next;
while (p)
{printf(p->data);
p=p->next;}
}
3. 插入子函数
status insert(linklist &l,int i,elemtype e)
{//在带头结点的单链表l中第i个位置前插入元素e
p=l;j=0;
while(p&&j<i-1)
{p=p->next;
j++;}
if(!p||j>i-1) return error;
s=(linklist)malloc(sizeof(lnode));
s->data=e;
s->next=p->next;
p->next=s;
return ok;
}
4.删除子函数
status delete(linklist l,int i)
{//删除带头结点的单链表l中第i个元素,用e返回其值
p=l;j=0;
while(p->next&&j<i-1)
{p=p->next;
j++;}
if(!p->next||j>i-1) return error;
s=p->next;
p->next=s->next;
e=s->data;
free(s);
return ok;
}
void main()
{
linklist head,stu;
int del_num;
printf("input records:\n");
head=creat();
print(head);
printf("\ninput the deleted number: ");
scanf("%d",&del_num);
while(dei_num!=0)
{
head=del(head,del_num);
print(head);
printf("input the deleted number: ");
scanf("%d",&del_num);
}
printf("\ninput the inserted number: ");
stu=(linklist)malloc(sizeof(lnode));
scanf("%d",&stu->data);
while(stu->data!=0)
{
head=insert(head,stu);
printf("input the inserted number: ");
stu=(linklist)malloc(sizeof(lnode));
scanf("%d",&stu->data);
}
