数据结构 线性表的顺序存储
来源:互联网 发布:mac邮件设置qq邮箱 编辑:程序博客网 时间:2024/04/30 20:50
#include<stdio.h>#include<stdlib.h>#include<time.h>#define MAX 1000typedef struct {int num;char name[6];}Mem;typedef struct{Mem mem[MAX];int len;}Seqlist ;Seqlist L;void Print(){printf("\n");system("color 0A");printf("**请按提示操作**\n");printf("1-> 初始化链表\n");printf("2-> 计算链表长度\n");printf("3-> 插入节点\n");printf("4-> 取节点\n");printf("5-> 删除节点\n");printf("6-> 待加入功能\n");printf("9-> 查看链表信息\n");printf("0-> 退出\n");printf("\n");}void Look(Seqlist *L){int i,j;if(L->len==0) printf("当前链表为空!\n");for(i=0;i<L->len;i++){printf("%5d ",L->mem[i].num);for( j=0;j<6;j++)printf("%c",L->mem[i].name[j]);printf("\n");}}void Initial(Seqlist *K){K->len=0;printf("初始化成功!\n");}void ListLen(Seqlist *L){printf("该链表的长度为%d\n",L->len);}void Insert0(Seqlist *L){int i,j,n,t;srand(time(NULL));printf("请输入插入的节点个数:");scanf("%d",&n);for(i=0;i<n;i++){printf("请输入第%d个成员的代号:\n",i+1);t=rand()%9999;L->mem[L->len].num=10000+t;printf("第%d个成员代号已自动生成:",i+1);printf("%5d \n",L->mem[i].num);printf("请输入第%d个成员的名称:\n",i+1);for(j=0;j<6;j++){t=rand()%26+65;L->mem[L->len].name[j]=t;}printf("第%d个成员名称已自动生成:",i+1);for( j=0;j<6;j++)printf("%c",L->mem[i].name[j]);printf("\n");L->len++;}printf("插入完毕,请继续操作\n");}void Insert1(Seqlist *L,int i){int n,j,k,x,t;printf("请输入要插入的个数:");scanf("%d",&n);for(k=L->len-1,j=L->len+n-1;k>=i;k--,j--){L->mem[j]=L->mem[j-n];}L->len+=n;Look(L);for(k=0,j=i;k<n;j++,k++){printf("请输入第%d个成员的代号:\n",k+1);t=rand()%9999;L->mem[j].num=10000+t;printf("第%d个成员代号已自动生成:",k+1);printf("%5d \n",L->mem[j].num);printf("请输入第%d个成员的名称:\n",k+1);for(x=0;x<6;x++){t=rand()%26+65;L->mem[j].name[x]=t;}printf("第%d个成员名称已自动生成:",k+1);for(x=0;x<6;x++)printf("%c",L->mem[j].name[x]);printf("\n");}}void InsertPick(Seqlist *L,int t){int i;if(L->len==0){printf("当前链表为空,请先输入节点!\n");Insert0(L);}else{if(!t){printf("\n当前一共有%d个节点:\n",L->len); Look(L); printf("请输入要插的节点号(0表示插入最后):");t=1;}scanf("%d",&i);if(i==0) {Insert0(L);}else {if(i>L->len){printf("超出节点范围,请重新输入:");InsertPick(L,t);} else{ Insert1(L,i);}}}}void GetDot(Seqlist L,int t){int i;if(!t) printf("当前共有%d个节点\n请输入要取的节点:\n",L.len); scanf("%d",&i);if(i>L.len) {printf("超出链表节点个数,请重新输入:");t=1;GetDot(L,t);}else{printf("该节点为:\n");printf("%d ",L.mem[i-1].num);for(t=1;t<7;t++)printf("%c",L.mem[i-1].name[t-1]);printf("\n");}}void Delete(Seqlist *L,int t){int i;char c;if(!t) printf("当前共有%d个节点\n请输入要删除的节点:\n",L->len); scanf("%d",&i);if(i>L->len) {printf("超出链表节点个数,请重新输入:");t=1;Delete(L,t);}else{printf("该节点为:\n");printf("%d ",L->mem[i-1].num);for(t=1;t<7;t++)printf("%c",L->mem[i-1].name[t-1]);printf("\n");printf("确认删除吗?Y/N :");scanf(" %c",&c);if('Y'==c||'y'==c){ for(t=i-1;t<L->len-1;t++) L->mem[t]=L->mem[t+1]; L->len--;printf("删除成功,当前链表为:\n");Look(L);} else printf("取消删除,请重新操作!\n");}} int main(){int t;printf("线性表的顺序存储\n");while(1){ Print();scanf("%d",&t);switch(t){ case 1:Initial(&L);break; case 2:ListLen(&L);break; case 3:InsertPick(&L,0);break; case 4:GetDot(L,0);break; case 5:Delete(&L,0);break;case 6:printf("功能待开发~\n");break;case 9:Look(&L);break; case 0: return 0; default:printf("输入错误,请重新输入:\n");break;}}printf("\n");printf("\n");printf("\n");return 0;}
0 0
- 【数据结构】线性表的顺序存储结构
- 数据结构之线性表的顺序存储
- 数据结构 线性表的顺序存储
- 数据结构:线性表的顺序存储
- 【数据结构】线性表的顺序存储结构
- 数据结构-线性表的顺序存储
- 数据结构--线性表顺序存储
- 数据结构---线性表---顺序存储
- 数据结构一 线性表的顺序存储结构
- 跟我学数据结构--线性表的顺序存储
- 大话数据结构一:线性表的顺序存储结构
- 数据结构实验一 线性表的顺序存储实验
- 数据结构:线性表的顺序存储--Java实现
- 数据结构笔记之线性表的顺序存储结构
- 数据结构之线性表的顺序存储结构
- Python 数据结构 之 线性表 的顺序存储结构
- 【数据结构基础】线性表的顺序存储结构
- 数据结构例程——线性表顺序存储的应用
- Problem F
- Redis 数据持久化
- 高效Linux之Terminal下实用快捷键
- 07 JAVA IO流
- Lucene八(搜索分页)
- 数据结构 线性表的顺序存储
- 数据库设计--实体关系图(ERD)
- ExpandableListView组件学习笔记
- Android开发----音乐播放器(界面设计)
- 杭电4883 TIANKENG’s restaurant(小板凳的问题)
- win7旗舰版升级win10
- HDU 4987/BC 7C Little Pony and Dice
- hdu2037今年暑假不AC【贪心】
- SVD奇异值分解简析