#include
#include // 定义链表结构
typedef struct Node {int data;struct Node *next;
}Node,*LinkList;// 初始化列表
LinkList initList() {LinkList L = (Node *) malloc (sizeof(Node));L->next = NULL;return L;
}// 尾插法创建单链表
void tailList(LinkList L) {Node *r,*s;int data;r = L;printf("输入(-1代表结束):");while(1) {scanf("%d",&data);if(data == -1) return;s = (Node *) malloc (sizeof(Node));s->data = data;r->next = s;r = s;}
}// 打印
void printList(LinkList L) {Node *p;p = L;if(p->next == NULL) return;p = L->next;while(p) {printf("%d -> ",p->data);p = p->next;}printf("\n");
}/*
* 删除:删除第i个位置的内容,并且将值保存到变量e中
*/
void delList(LinkList L, int i, int e) {Node *pre,*r;int j = 0; // 找到 i-1 pre = L;while((pre->next != NULL) && (jnext;j++;}if(pre->next == NULL) {printf("删除节点的i不合理!");return;}// 此时 j=i-1r = pre->next; // pre->next 就是 i 位置pre->next = r->next; // 给 pre 重新赋值,是i+1位置e = r->data;free(r);printf("删除成功!\n");
}// 主函数
int main() {int e;LinkList L;L = initList(); // 初始化tailList(L); // 创建printList(L); // 打印delList(L,2,e); // 删除,这里的e要提前定义printList(L); // 打印return 0;
}

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!