📄 单链表.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
typedef char DataType;
typedef struct node
{
DataType data;
struct node *next;
}ListNode;
typedef ListNode *LinkList;
void main()
{
LinkList head;
DataType x;
int i;
int p;
LinkList CreateListR1(void);
LinkList GetNode(LinkList head,int i);
void InsertList(LinkList head,DataType x,int i);
void DeleteList(LinkList head,int i);
void PrintList(LinkList head);
printf(" 欢迎进入单链表程序\n");
printf("请输入字符,议回车结束:\n");
head=CreateListR1();
PrintList(head);
printf("请输入欲插入的元素:");
scanf("%c",&x);
printf("请输入欲插入元素的位置:");
scanf("%d",&i);
InsertList(head,x,i);
PrintList(head);
printf("请输入索要删除的结点位置:");
scanf("%d",&i);
DeleteList(head,i);
PrintList(head);
printf(" 谢谢使用!\n");
}
LinkList CreateListR1(void)
{
char ch;
LinkList head=(ListNode *)malloc(sizeof(ListNode));
ListNode *s,*r;
r=head;
while ((ch=getchar())!='\n')
{
s=(ListNode *)malloc(sizeof(ListNode));
s->data=ch;
r->next=s;
r=s;
}
r->next=NULL;
return head;
}
LinkList GetNode(LinkList head,int i)
{
int j;
ListNode *p;
p=head;j=0;
while (p->next && j<i)
{ p=p->next;
j++;
}
if (i==j)
return p;
else
return NULL;
}
void InsertList(LinkList head,DataType x,int i)
{
ListNode *p,*s;
p=GetNode(head,i-1);
if(p==NULL)
{
printf("插入位置非法\n");
exit(0);
}
s=(ListNode *)malloc(sizeof(ListNode));
s->data=x;
s->next=p->next;
p->next=s;
}
void DeleteList(LinkList head,int i)
{
ListNode *p,*r;
p=GetNode(head,i-1);
if(p==NULL||p->next==NULL)
{
printf("删除位置非法\n");
exit(0);
}
r=p->next;
p->next=r->next;
free(r);
}
void PrintList(LinkList head)
{
ListNode *p;
for(p=head->next;p;p=p->next)
printf("%c ",p->data);
printf("\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -