双链表的含义就是链表结构体中有两个指针域,一个指向前一个结点,另一个指向后一个结点。下面的代码是对循环双链表的操作练习。
#include <stdio.h>
#include <stdlib.h>
typedef struct list
{
char data;
struct list *prior;
struct list *next;
}dlinklist;
dlinklist *CreateLinklist_End(); //尾插法创建循环双链表
void ShowLinklist(dlinklist *h); //输出显示链表
int DLinklist_Insert(dlinklist *h, char dat, int pos); //双链表按指定位置插入结点
int DLinklist_Delete(dlinklist *h, int pos); //双链表按指定位置删除结点
int main(void)
{
dlinklist *head;
int choice, pos, ans;
char dat;
printf("循环双链表的操作练习\n");
printf("创建循环双链表,请依次输入字符数据('#'表示结束):\n");
head = CreateLinklist_End();
while(1)
{
printf("对双链表操作:\n");
printf("1.在指定位置插入一个结点\n");
printf("2.删除指定位置的结点\n");
printf("3.输出显示链表\n");
printf("4.退出程序\n");
printf("做出选择:\n");
scanf("%d", &choice);
getchar();
switch(choice)
{
//链表结点的插入
case 1:
p