静态链表的基本运算

来源:互联网 发布:海马模拟器有mac版 编辑:程序博客网 时间:2024/06/16 06:18
#include<stdio.h>#include<stdlib.h>#define maxsize 30typedef struct{char data;int cursor;}SNode;void insert_list(SNode L[],int i,char x){int j,j1,j2,k;j=L[0].cursor;if(i==1){if(j==0){L[1].data=x;L[0].cursor=1;L[1].cursor=0;}else{k=j+1;while(k!=j)if(L[k].cursor==-1)break;elsek=(k+1)%maxsize;if(k!=j){L[k].data=x;L[k].cursor=L[0].cursor;L[0].cursor=k;}elseprintf("链表已满,插不进去了~\n");}}else{k=0;while(k<i-2&&j!=0){k++;j=L[j].cursor;}if(j==0)printf("插入有误!\n");else{j1=j;j2=L[j].cursor;k=j+1;while(k!=j)if(L[k].cursor==-1)break;elsek=(k+1)%maxsize;if(k!=j){L[k].data=x;L[j1].cursor=k;L[k].cursor=j2;}elseprintf("链表已满,插不进去了~\n");}}}void print(SNode *L){int i;i=L[0].cursor;while(i!=0){printf("%c->",L[i].data);i=L[i].cursor;}printf("\n");}void main(){SNode L[maxsize];int i;char x;for(i=1;i<maxsize;i++)L[i].cursor=-1;L[0].cursor=0;i=1;printf("建立静态链表:\n");scanf("%c",&x);while(x!='\n'){insert_list(L,i,x);i++;scanf("%c",&x);}printf("请输入要插入的位置和值(逗号隔开):\n");scanf("%d,%c",&i,&x);insert_list(L,i,x);printf("插入之后的链表为:\n");print(L);}

原创粉丝点击