#include #include #include #define OK 1 #define ERROR -1 typedef struct LNode{ int data; struct LNode *next; }LNode,*LinkList; struct LNode *p; //尾插法插入新元素 int GreateList(LinkList &L,int n) { int i; L=(LinkList)malloc(sizeof(LNode)); //先建立一个头结点为空的空表 L->next=NULL; printf("请输入您所希望的链表元素数目:"); scanf("%d",&n); for(i=0;idata); //输入元素 p->next=L->next; L->next=p; } return OK; } //在第i个元素之前插入n int Insert_List(LinkList &L,int i,int n) { LNode *s; int j=0; p=L; printf("请输入插入元素的位置:"); scanf("%d",&i); printf("请输入需要插入的元素:"); scanf("%d",&n); while(p&&jnext; j++; } if(!p||j>i-1) return ERROR; s=(LinkList)malloc(sizeof(LNode)); //生成新结点 s->next=p->next; //插入 p->next=s; return OK; } //删除第i个元素,并用e返回其值 int Delete_List(LinkList &L,int i,int e) { int j=0; p=L; printf("请输入你想删除元素的位置:"); scanf("%d",&i); while(p->next&&jnext; j++; } if(!(p->next)||j>i-1) //删除位置不合理 return ERROR; p->next=p->next->next; e=p->data; free(p); return OK; } //获取第i个元素的值,并用e返回 int GetElem_List(LinkList &L,int i,int e) { int j=1; p=L->next; printf("请输入你想获取元素的位置:"); scanf("%d",&i); while(p&&jnext; j++; } if(!p||j>i) //元素不存在 return ERROR; e=p->data; //获取 return OK; } //链表的遍历 int Display_List(LinkList &L) { p=L->next; while(p!=NULL) { printf("%d",p->data); p=p->next; } printf("\n"); return OK; } int main() { int i,m,a,e; int k=1; LinkList l; do { GreateList(l,m); Display_List(l); printf("请输入您所希望的操作步骤:"); scanf("%d",&a); switch(a) { case 1: Insert_List(l,i,e);break; case 2: Delete_List(l,i,e);break; case 3: GetElem_List(l,i,e);break; } }while(k==1); return OK; }
问题就是如图片所示,输入十个数据之后,确认之后,就会有第二张图片的情况,删除同文件夹其他文件也没用。求解。