69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include<malloc.h>
typedef struct node
{
char data;
struct node *next;
}link;
link * get(link *l, int i)
{
link *p;int j=0;
p=l;
while((j<i) && (p->next!=NULL))
{p=p->next;j++;}
if(j==i)
return p;
else
return NULL;
}
link * ins (link *l, char ch,int i)
{ link *p,*s;
p=get(l,i-1);
if(p==NULL) printf("输入有误\n");
else
{
s=(link *)malloc(sizeof(link));
s->data=ch;
s->next=p->next;
p->next=s;
}
return l;
}
link * find(link *l, char ch)
{
link *p; int i=0; int j=0;
p=l;
while(p!=NULL)
{ i++;
if(p->data!=ch)
p=p->next;
else {printf("您查找的数据在第%d个位置.\n",i-1);
j=1;p=p->next;
}
}
if(j!=1) printf("您查找的数据不在线性表中.\n");
return l;
}
link * del(link *l, int i)
{
link *p,*s;
p=get(l,i-1);
if(p==NULL)
printf("输入有误\n");
else
{
s=p->next;
p->next=s->next;
free(s);
}
return l;
}
link * add(link *l )
{
link *p,*s;
char ch;
link *HEAD;
link *R,*P,*L;
printf("请输入一串单字符数据,以*结束!\n");
HEAD=(link *)malloc(sizeof(link));
HEAD->next=NULL;
R=HEAD;
getchar();
ch=getchar();
while(ch!='*')
{
P=(link *)malloc(sizeof(link));
P->data=ch;P->next=NULL;
R->next=P;R=R->next;
getchar();
ch=getchar();
}
L=HEAD;
printf("当前输入的线性表为:\n");
P=L;P=P->next;
if(L!=NULL)
do
{printf("%c ",P->data);////////////////////////////////////
P=P->next;
}while(P!=NULL);
printf("\n");
p=l;
while(p->next!=NULL)
p=p->next;
s=L;
p->next=s->next;
p=l;
return l;
}
link * print(link *l)
{ int i,k;
char ch;
link *p,*q;
printf("当前线性表为:\n");
p=l;p=p->next;
if(l!=NULL)
do
{printf("%c ",p->data);
p=p->next;
}while(p!=NULL);
printf("\n");
printf("请选择您要的操作:");
printf(" 1、插入");
printf(" 2、查找");
printf(" 3、删除");
printf(" 4、合并");
printf(" 0、退出");
printf("\n");
scanf("%d",&k);
if(k==1)
{
printf("请输入您要插入的数据值:");
scanf("%c",&ch);
printf("请输入您要插入的位置:");
scanf("%d",&i);
p=ins(l,ch,i);
q=print(l);
}
else if(k==2)
{
printf("请输入您要查找的数据值:");
scanf("%c",&ch);
p=find(l,ch);
q=print(l);
}
else if(k==3)
{
printf("请输入您要删除的数据的位置:");
scanf("%d",&i);
p=del(l,i);
q=print(l);
}
else if(k==4)
{ p=add(l);
q=print(l);
}
else if(k==0)
;
else
{printf("输入错误!\n");
q=print(l);}
return l;
}
int main()
{
char ch;
link *r,*p,*q,*l;
printf("请输入一串单字符数据,以*结束!\n");
//link *head;
l=(link *)malloc(sizeof(link));
l->next=NULL;
r=l;
ch=getchar();
// getchar();
while(ch!='*')
{
p=(link *)malloc(sizeof(link));
p->data=ch;p->next=NULL;
r->next=p;r=r->next;
ch=getchar();
// getchar();
}
//l=head;
q=print(l);
return 0;
}