#include <stdio.h> #include <stdlib.h> typedef struct lnode{ int data; struct lnode* next; } node,*linklist; void initlist(linklist &l){ linklist p=(linklist)malloc(sizeof(node)); p->next=p;//此处可以控制循环链表 l=p; } void InsertFront(linklist &l,int e){//从表头插入元素 linklist p; p=(linklist)malloc(sizeof(node)); p->data=e; p->next=l->next; l->next=p; } void InsertEnd(linklist &l,int e){//从末尾插入元素 linklist p,q; p=(linklist)malloc(sizeof(node)); p->data=e; q=l; while(q->next!=l){//此处判断扫到末尾的条件为!=l q=q->next; } p->next=q->next; q->next=p; } void Print(linklist l){ linklist p; p=l->next; while(p!=l){ printf("%d ",p->data); p=p->next; } printf("\n"); } void DeleteFront(linklist &l,int &val){//删除表前面的元素 linklist p; p=l->next; if(p!=l){//判断是不是空表 l->next=p->next; val=p->data; free(p); } else printf("LinkList is empty!/n"); } void DeleteEnd(linklist &l,int &val){//删除表后面的元素 linklist p,q;//q为p的前驱节点 q=l; p=l->next; if(p!=l){//判断表是否为空 while(p->next!=l){ q=p; p=p->next; } val=p->data; q->next=p->next; } else printf("LinkList is empty!/n"); } int main(){ linklist l; int i,res; initlist(l); for(i=1; i<=8; i++){ InsertFront(l,i+38); InsertEnd(l,i+100); } Print(l);//输出表的元素 DeleteFront(l,res); DeleteEnd(l,res); Print(l); return 0; }
时间: 2024-10-01 21:06:04