#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
int data;
struct LNode* prior,* next;
}LNode,*LinkNode;
LinkNode S,Head,Trail,End;
void Delete();
void TailInsert();
void TailInsert()
{
Head = (LinkNode)malloc(sizeof(LNode));
Head->next = NULL;
Trail = Head;
int number;
printf("请输入数字 -1结束:");
scanf("%d",&number);
while (number != -1) {
S = (LinkNode)malloc(sizeof(LNode));
S->data = number;
Trail->next = S;
S->prior = Trail;
Trail = S;
scanf("%d",&number);
}
LinkNode R = Head->next;
while (1) {
int tem;
printf("1-前一个|2-后一个|0-结束:");
scanf("%d",&tem);
if(tem == 0)break;
else if(tem == 1)R = R->prior;
else R = R->next;
if(R == NULL || R == Head)printf("超出链表范围!\n");
else printf("这个数是:%d\n\n",R->data);
}
}
void Delete()
{
printf("请输入删除数字:");
int number;
scanf("%d",&number);
LinkNode R = Head;
while(1)
{
if(R->next->data == number)
{
R->next = R->next->next;
R->next->prior = R;
break;
}
R = R->next;
}
R = Head->next;
while (1) {
int tem;
printf("1-前一个|2-后一个|0-结束:");
scanf("%d",&tem);
if(tem == 0)break;
else if(tem == 1)R = R->prior;
else R = R->next;
if(R == NULL || R == Head)printf("超出链表范围!\n");
else printf("这个数是:%d\n\n",R->data);
}
}
int main(int argc, char const *argv[]) {
TailInsert();
printf("\n");
Delete();
return 0;
}
王道考研 ++++ 双链表(C语言 前后遍历)
猜你喜欢
转载自blog.csdn.net/WX_1218639030/article/details/98103807
今日推荐
周排行