📄 单连表.txt
字号:
输入一系列递减顺序的整数(100,50,40,30……),以0标志结束,将这些数作为data域逆序建立一个单链表;从键盘输入一个整数X,将X插入到此单链表中并保持单链表data域的值递增关系,输出此时单链表各结点data域的值;从键盘输入一个整数Y,若Y值在单链表中存在,则删除data域的值为Y的结点(注单链表中没有data域值相同的结点),并输出此时单链表各结点data域的值。
#define NULL 0
#include <stdio.h>
#include <malloc.h>
typedef struct LNode
{ int data;
struct LNode *next;
}LNode,*LinkList;
LinkList create( )
{ int x;
LinkList L, p;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
printf("\ninput a integer:");
scanf("%d",&x);
while(x!=0)
{ p=(LinkList)malloc(sizeof(LNode));
p->data=x;
p->next=L->next;
L->next=p;
printf("input a integer:");
scanf("%d",&x);
}
return(L);
}
LinkList insert_l(LinkList L,int x)
{ LinkList p, q,s;
q=L; p=q->next;
while(p && p->data<x)
{q=p; p=p->next;}
s=(LinkList)malloc(sizeof(LNode));
s->data=x; s->next=p; q->next=s;
return (L);
}
void print(LinkList L)
{ LinkList p;
p=L->next;
while(p)
{ printf("%d ",p->data);
p=p->next;
}
}
LinkList delete_l(LinkList L, int y)
{ LinkList p,q;
q=L;p=q->next;
while(p && p->data!=y)
{q=p;p=p->next; }
if(p) { q->next=p->next; free(p);}
return(L);
}
main()
{ LinkList L;
int x,y;
L=create();
printf("input a integer x=?");
scanf("%d",&x);
L=insert_l(L,x);
printf(“insert result:”);
print(L);
printf("\ninput a integer y=?");
scanf("%d",&y);
L=delete_l(L,y);
printf(“delete result:);
print(L);
}
运行情况:input a integer:100
input a integer:50
input a integer:40
input a integer:30
input a integer:0
input a integer x=?35
insert result:30 35 40 50 100
input a integer y=?50
delete result:30 35 40 100
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -