您的位置:首页 > 其它

线性表的输入输出查找删除插入(链式,尾插入)

2014-03-22 22:57 316 查看
#include<stdio.h>
#include<malloc.h>
#define error -1
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
LNode *create_LinkList(void)
{
int data;
LNode *head,*p,*q;
head=p=(LNode *)malloc(sizeof(LNode));
p->next=NULL;
while(1)
{
scanf("%d",&data);
if(data==0)
break;
q=(LNode *)malloc(sizeof(LNode));
q->data=data;
q->next=p->next;
p->next=q;
p=q;
}
return(head);
}
void PrintLinkList(LNode *head)
{
LNode *p;
p=head->next;
if(p!=NULL)
do
{
printf("%d",p->data);
p=p->next;
}
while(p!=NULL);
}
int Get_Elem(LNode *L,int i)
{
int j;
LNode *p;
p=L->next;
j=1;
while(p!=NULL&&j<i)
{
p=p->next;
j++;
}
if(j!=i)
return(error);
else return(p->data);
}
void Insert_LNode(LNode *L,int i,int e)
{
int j=0;
LNode *p,*q;
p=L->next;
while(p!=NULL&&j<i-1)
{
p=p->next;
j++;
}
if(j!=i-1)
printf("no");
else {
q=(LNode *)malloc(sizeof(LNode));
q->data=e;
q->next=p->next;
p->next=q;
}
}
void Delete_LinkList(LNode *L,int i)
{
int j=1;
LNode *p,*q;
p=L;
q=L->next;
while(p->next!=NULL&&j<i)
{
p=q;
q=q->next;
j++;
}
if(j!=i)
printf("no");
else
{p->next=q->next;
free(q);
}
}
void main()
{
LNode *pt;
int t,a,b;
pt=create_LinkList();
PrintLinkList(pt);
scanf("%d",&t);
b=Get_Elem(pt,t);
printf("%d",b);
scanf("%d,%d",&t,&a);
Insert_LNode(pt,t,a);
PrintLinkList(pt);
scanf("%d",&t);
Delete_LinkList(pt,t);
PrintLinkList(pt);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐