本文共 1848 字,大约阅读时间需要 6 分钟。
对单链表进行初始化 创建 插入 删除 查找 功能
#include注意点 1. 头插法进行初始化 输入 2 3 4 5 6 则链表顺序为 6 5 4 3 2 1 2. 尾插法不存在这种现象 3. 链表插入判断是否满 删除判断是否为空#include typedef struct Node //定义单链表 { int data; struct Node *next;}LNode,*LinkList; void CreateList_L(LinkList &L,int n) //创建单链表 { LNode *rear,*q; int data; L=rear=(LinkList)malloc(sizeof(LNode)); L->next=NULL; rear=L; for(int i=0;i data=data; q->next=rear->next; rear->next=q; rear=q; }}void ListInsert_L(LinkList &L,int i,int e) //向链表中第i个位置插入元素e { LNode *p,*q; p=L; int j=0; while(p&&j next;j++; } if(!p||j>i-1)return; q=(LinkList)malloc(sizeof(LNode)); q->data=e; q->next=p->next; p->next=q;}void ListDelete_L(LinkList &L,int i,int &e) //删除第i个位置的元素 e { LNode *p,*q; p=L; int j=0; while(p&&j next; j++; } if(!p||j>i-1)return; q=(LinkList)malloc(sizeof(LNode)); q=p->next; p->next=q->next; e=q->data; free(q); printf("删掉的值为%d \n",e);}void GetElem_L(LinkList L,int i) //查询第i个元素的值 { LNode *p; int j=1,e; p=L->next; while(p!=NULL&&j next; j++; } if(!p||j>i)return; e=p->data; printf("第%d个元素为:%d\n",i,e);}int main(){ LinkList L1; int n,m,y,t; printf("输入个数:\n"); scanf("%d",&n); printf("输入元素:\n"); CreateList_L(L1,n); LNode *p; p=L1->next; printf("链表的输出为:\n"); while(p){ printf("%d ",p->data); p=p->next; } printf("\n查询第几个元素:\n"); scanf("%d",&m); GetElem_L(L1,m); printf("\n插入位置、元素:\n"); scanf("%d%d",&y,&t); ListInsert_L(L1,y,t); //插入第y位置插入t p=L1->next; printf("往第y个位置插入t后链表的顺序为:\n"); while(p) { printf("%d ",p->data); p=p->next; } int w,x; printf("\n删除位置:\n"); scanf("%d",&x); ListDelete_L(L1,x,w); p=L1->next; printf("删掉第x个位置数字后链表的顺序为:\n"); while(p) { printf("%d ",p->data); p=p->next; } return 0;}
转载地址:http://jrjwi.baihongyu.com/