⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 双向链表的创建和操作.txt

📁 这是有关数据结构的例程序
💻 TXT
字号:
definition.h
===============================
typedef char ElemType;

typedef struct{//定义单链表
ElemType data;
struct Node* next;
struct Node* prior;
}Node, *LinkList;

LinkList FormList();//正向形成链表除数据
void Disp(LinkList);//显示数据
void Delete(LinkList, unsigned, unsigned);//删除数据
void Insert(LinkList, unsigned);//插入数据
====================================================================

functions.c
======================
#include<malloc.h>
#include<stdio.h>
#include"definition.h"

LinkList FormList()//正向形成链表
{ LinkList h, head, end;
ElemType temp;

if( !( h=head=(LinkList)malloc(sizeof(Node)) ) ){
  printf("Not Enough Memory!\n");
  return 0;
}
h->next=h->prior=h;
while( (temp=getchar())!='\n' ){
  if( !( end=(LinkList)malloc(sizeof(Node)) ) ){
   printf("Not Enough Memory!\n");
   return 0;
  }
  end->data=temp;
  end->next=h;
  end->prior=head;
  head->next=end;
  head=end;
  h->prior=end;
}
return h;
}

void Insert(LinkList L, unsigned i)//插入数据
{//若单链表没有头结点,需对在第一个结点之前进行插入的情况单独进行处理。很麻烦
LinkList T, A=L;
ElemType temp;
getchar();
while(--i){
  L=L->next;
  if( !(L-A) )
   break;
}
if(i&&!(L-A)){
  printf("Error!\n");
  return;
}
printf("请输入您要插入的数据:");
while( (temp=getchar())!='\n' ){
  if( !( T=(LinkList)malloc(sizeof(Node)) ) ){
   printf("Not Enough Memory!\n");
   return;
  }
  T->data=temp;
  T->next=L->next;
  A=L->next;
  A->prior=T;
  T->prior=L;
  L->next=T;
  L=T;
}
}

void Delete(LinkList L, unsigned i, unsigned j)//删除数据
{ LinkList T, A, B=L;

getchar();
while(--i){
  L=L->next;
  if( !(L-B) )
   break;
}
if(i&&!(L-B)){
  printf("Error!\n");
  return;
}
for(T=L->next; j&&(T-B); j--){
  L->next=T->next;
  A=T->next;
  A->prior=L;
  free(T);
  T=L->next;
}
}

void Disp(LinkList L)//显示数据
{ LinkList T=L;

for(L=L->next; L-T; L=L->next)
  printf("%c", L->data);
printf("\n");
} =============================================================

main.c
====================
#include<malloc.h>
#include<stdio.h>
#include"definition.h"

int main()
{ unsigned i, j;
LinkList A;

printf("请输入数据:");
A=FormList();
printf("表A中的数据为:");
Disp(A);

//插入数据
printf("请问您要在表A的哪个位置插入数据:");
scanf("%d", &i);
Insert(A, i);
printf("表A中的数据为:");
Disp(A);

//删除数据
printf("请问您要从表A的哪个位置开始删除数据:");
scanf("%d", &i);
printf("请问您要删除几个元素:");
scanf("%d", &j);
Delete(A, i, j);
printf("表A中的数据为:");
Disp(A);

return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -