#define M (struct data *)malloc(sizeof(struct data))
#include<stdlib.h>
#include<stdio.h>
struct data
{
int d;
struct data * next;
};
struct data * create(int n)//创建
{
int i;
struct data *p,*p1,*head;
p1 = M;
p1->next = NULL;
head = p1;
for(i=0;i<n;i++)
{
p=M;
scanf("%d",&p->d); //head 1 2 3->next = NULL
p->next = NULL;
p1->next = p;
p1 = p;
}
return head;
}
void dell(struct data * head,int k,int x)//删除
{
struct data *p1;
int i;
p1 = head;
if (k=x){
for(i=0;i<k;i++)
p1 = p1->next; // head.next -1.next-2.next-3.next = NULL
free(p1);
}else{
for(i=0;i<k-1;i++)
p1 = p1->next;
p1->next = p1->next->next;
}
}
/*voli cr(struct data * head,int k)//插入
{
struct data *p1;
int i;
for(i=0;i<k-1;i++)
p1 = p1->next;
p1->
}
*/
void prin(struct data * head)//打印
{
struct data *p ;
p=head->next;
while(p!=NULL)
{
printf("%5d",p->d);
p=p->next;
}
}
main()
{
struct data *head;
int t,k,a;
char ch,ch1;
t=1;
while(t)
{
printf("请输入你的选择\n");
printf("A-----生成链表\n");
printf("B-----显示链表\n");
printf("C-----删除节点\n");
printf("D-----插入节点\n");
printf("E-----退出\n");
ch=getchar();
ch1=getchar();
switch(ch)
{
case 'A':head=create(3);printf("成功1\n");ch1=getchar();break;
case 'B':prin(head);printf("成功2\n");break;
case 'C':scanf("%d",&k);dell(head,k,3);printf("成功3\n");break;
//case 'D':scanf("%d",&a);dell(head,a);printf("成功4\n");break;
default:t=0;printf("成功5\n");break;
}
}
}
#include<stdlib.h>
#include<stdio.h>
struct data
{
int d;
struct data * next;
};
struct data * create(int n)//创建
{
int i;
struct data *p,*p1,*head;
p1 = M;
p1->next = NULL;
head = p1;
for(i=0;i<n;i++)
{
p=M;
scanf("%d",&p->d); //head 1 2 3->next = NULL
p->next = NULL;
p1->next = p;
p1 = p;
}
return head;
}
void dell(struct data * head,int k,int x)//删除
{
struct data *p1;
int i;
p1 = head;
if (k=x){
for(i=0;i<k;i++)
p1 = p1->next; // head.next -1.next-2.next-3.next = NULL
free(p1);
}else{
for(i=0;i<k-1;i++)
p1 = p1->next;
p1->next = p1->next->next;
}
}
/*voli cr(struct data * head,int k)//插入
{
struct data *p1;
int i;
for(i=0;i<k-1;i++)
p1 = p1->next;
p1->
}
*/
void prin(struct data * head)//打印
{
struct data *p ;
p=head->next;
while(p!=NULL)
{
printf("%5d",p->d);
p=p->next;
}
}
main()
{
struct data *head;
int t,k,a;
char ch,ch1;
t=1;
while(t)
{
printf("请输入你的选择\n");
printf("A-----生成链表\n");
printf("B-----显示链表\n");
printf("C-----删除节点\n");
printf("D-----插入节点\n");
printf("E-----退出\n");
ch=getchar();
ch1=getchar();
switch(ch)
{
case 'A':head=create(3);printf("成功1\n");ch1=getchar();break;
case 'B':prin(head);printf("成功2\n");break;
case 'C':scanf("%d",&k);dell(head,k,3);printf("成功3\n");break;
//case 'D':scanf("%d",&a);dell(head,a);printf("成功4\n");break;
default:t=0;printf("成功5\n");break;
}
}
}