链表

xiaoxiao2022-06-11  28

#include <iostream> #include <cstdio> #include <algorithm> //#difine NULL 0; using namespace std; typedef struct node { int data; struct node *next; }lnode,*linklist; void Creat_linklist_before(); void Creat_linklist_after(); void Print_linklist(); void Insert_linklist_before(); void Del_LinkList(); void Reverse(); linklist head=(linklist)malloc(sizeof(lnode)); int main(int argc, char *argv[]) { Creat_linklist_after(); bool t=true; while(t) { printf("\n\n*******************************\n\n"); printf(" 1.在第i个位置插入元素k\n"); printf(" 2.删除元素x\n"); printf(" 3.输出所有链表元素\n"); printf(" 4.将链表逆序\n"); printf(" 5.退出操作\n\n"); printf("*******************************\n\n") ; printf("请输入你想要进行的操作:"); int choice; cin>>choice; printf("\n"); switch(choice) { case 1:Insert_linklist_before();break; case 2:Del_LinkList();break; case 3:Print_linklist();break; case 4:Reverse();break; case 5:t=false;break; default:printf("重新选择你的操作\n");break; } } return 0; } void Creat_linklist_before() { printf("请输入数字:"); head->data=NULL; head->next=NULL; int x; while(cin>>x&&x!=-1000) { linklist s=(linklist)malloc(sizeof(lnode)); s->data=x; s->next=NULL; s->next=head->next; head->next=s; } } void Creat_linklist_after() { printf("请输入数字:"); head->data=NULL; head->next=NULL; int x; linklist now=head; while(cin>>x&&x!=-1000) { linklist s=(linklist)malloc(sizeof(lnode)); s->data=x; s->next=NULL; now->next=s; now=s; } } void Print_linklist() { printf("当前链表为:"); linklist p=(linklist)malloc(sizeof(lnode)); p=head->next; while(p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n"); } void Insert_linklist_before() { printf("请输入你想插入的位置:"); int i; cin>>i; printf("请输入你想插入的数字:"); linklist k=(linklist)malloc(sizeof(lnode)); cin>>k->data; k->next=NULL; linklist _now; _now=head; for(int j=1;j<i&&_now->next!=NULL;j++) _now=_now->next; k->next=_now->next; _now->next=k; Print_linklist(); } void Del_LinkList() { printf("请输入想删除的位置:"); int i; cin>>i; linklist _now=head,_next; for(int j=1;j<i;j++) { if(_now->next==NULL) { printf("该位置不存在数字!"); return; } _now=_now->next; } _next=_now->next; if(_now->next->next!=NULL) { _now->next=_now->next->next; free(_next); } else _now->next=NULL; Print_linklist(); } void Reverse() { linklist _now=(linklist)malloc(sizeof(lnode)), _next=(linklist)malloc(sizeof(lnode)); _now=head->next; head->next=NULL; while(_now) { _next=_now->next; _now->next=head->next; head->next=_now; _now=_next; } Print_linklist(); }

emmm,其实删除的部分还是有一点毛病,等有空了再优化删除长度外的bug

转载请注明原文地址: https://www.6miu.com/read-4931065.html

最新回复(0)