循环双向链表
来源:互联网 发布:怎么在淘宝上买东西 编辑:程序博客网 时间:2024/06/01 18:55
#include<stdio.h>#include<stdlib.h> #include<string.h>typedef struct node{char name[20];struct node* llink;struct node* rlink;}stu;int num(stu* Head)//计数 {stu* temp=Head;int i=0;while(temp->rlink!=Head){temp=temp->rlink;i++;}return i;}stu* create(int n){stu* Head,*pNew,*pEnd;Head=(stu*)malloc(sizeof(stu));Head->llink=NULL;Head->rlink=NULL;pNew=pEnd=Head;while(n--){pNew=(stu*)malloc(sizeof(stu));printf("请输入姓名:");scanf("%s",pNew->name);pNew->llink=pEnd;pNew->rlink=NULL;pEnd->rlink=pNew;pEnd=pNew;}pEnd->rlink=Head;Head->llink=pEnd;} stu* insert(stu* Head,int n){stu* pNew,*temp;int sum,i;pNew=(stu*)malloc(sizeof(stu));printf("请输入插入姓名:");scanf("%s",pNew->name);sum=num(Head);if(n>sum+1) { printf("插入出错\n"); return NULL;}temp=Head->rlink;//printf("\n----\n");for(i=1;i<n;i++){temp=temp->rlink;}pNew->llink=temp->llink;pNew->rlink=temp;temp->llink->rlink=pNew;temp->llink=pNew;printf("插入成功\n");return Head;}int del(stu* Head,int n){stu* temp=Head;for(int i=1;i<n;i++){temp=temp->rlink;if(temp==Head){return 0;}}temp->rlink=temp->rlink->rlink;temp->rlink->llink=temp; return 1;}stu* rep(stu* Head,int n){stu* temp=Head;for(int i=1;i<=n;i++){temp=temp->rlink;}printf("请输入存入信息:"); scanf("%s",temp->name);printf("\n修改成功\n");return Head;}int find(stu* Head,char *a){int i=1;stu* temp=Head->rlink;while(temp!=Head){if(strcmp(temp->name,a)==0) { printf("\n找到了\n"); return i; } temp=temp->rlink; i++;}printf("无此人\n");return 0;}void dis(stu* Head){stu* temp;temp=Head->rlink;while(temp!=Head){printf("%s ",temp->name);temp=temp->rlink;}}int main(){printf("创建中......\n"); char b[20]; int choice,number,temp; stu* Head; printf("请输入学生数量:"); scanf("%d",&number); Head=create(number); printf("--------------------------------------------\n"); printf("1.插入信息 2.删除信息\n"); printf("3.修改信息 4.查找信息\n"); printf("5.显示信息 6.退出\n"); printf("请输入选择功能:"); scanf("%d",&choice); while(1) { switch(choice) { case 1: printf("请输入插入位置:"); scanf("%d",&temp); insert(Head,temp); break; case 2: printf("请输入删除位置:"); scanf("%d",&temp); if(del(Head,temp)==0) { printf("\n删除出错\n"); }else{ printf("\n删除成功\n"); } break; case 3: printf("请输入修改位置:"); scanf("%d",&temp); rep(Head,temp); break; case 4: printf("请输入查找信息:"); scanf("%s",b); temp=find(Head,b); if(temp) printf("此人在%d个\n",temp); break; case 5: dis(Head); break; case 6: return 0; break; default: printf("输入出错\n"); } printf("\n请输入功能:"); scanf("%d",&choice); }}通过学生姓名来实现,如需其他信息,可以添加
阅读全文
0 0
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 双向循环链表
- 循环双向链表
- STM32 调试记录
- 最近很是迷茫啊
- POJ
- 分享一个gif截图工具
- ajax的data偶然数据溢出。。。
- 循环双向链表
- 网络异常模拟测试方法
- 大话数据结构(五)——栈的两种java实现方式
- MYSQL的用户变量(@)和系统变量(@@)
- Unity导入STL格式模型(一)
- C Primer Plus 第10章 数组和指针 编程练习
- 程序崩溃时自动记录minidump的c++类
- PYTHON PYTESSER 的安装
- 《摔跤吧!爸爸》中引人深思的中英文台词