|
发表于 2020-11-17 17:55:25
|
显示全部楼层
- #include <stdio.h>
- #include <stdlib.h>
- typedef int ElemType;
- //关于ElemType:它是element type(“元素的类型”)的简化体。
- //可以是任何数据类型,这里是int型
- typedef struct Node
- {
- int data;
- struct Node * next;
- } Node ;
- typedef struct Node* LinkList;
- //link:链接 list:目录
- void GetElem (LinkList L , int i , int * e)
- {
- int k ;
- LinkList p ;
- * e = -1 ;
- if(L && i > 0) {
- for(k = 1 , p = L ; p -> next && k < i ; k ++ , p = p -> next) ;
- if(k == i) * e = p -> data ;
- }
- }
- void ListInsert(LinkList L , int i , int e)
- {
- int k ;
- LinkList p , r ;
- if(L && i > 0) {
- for(k = 1 , r = L ; r -> next && k < i ; k ++ , r = r -> next) ;
- p = (LinkList) malloc(sizeof(Node)) ;
- p -> data = r -> data ;
- p -> next = r -> next ;
- r -> data = e ;
- r -> next = p ;
- }
- }
- LinkList ListDelete(LinkList L , int i , int * e)
- {
- int k ;
- LinkList h , p , r ;
- * e = -1 ;
- h = L ;
- if(L && i > 0) {
- for(p = r = L , k = 1 ; p -> next && k < i ; r = p , p = p -> next , k ++) ;
- if(k == i) {
- * e = p -> data ;
- if(p == L) h = p -> next ;
- else r -> next = p -> next ;
- free(p) ;
- }
- }
- return h ;
- }
- void CreateListHead(LinkList * L , int number)
- {
- LinkList h , p , r ;
- int i ;
- for(i = 0 ; i < number ; i ++ )
- {
- p = (LinkList) malloc(sizeof(Node)) ;
- p -> next = NULL ;
- scanf("%d" , & p -> data) ;
- if(! i) h = p ;
- else r -> next = p ;
- r = p ;
- }
- * L = h ;
- }
- void ShowList(LinkList L)
- {
- if(L) {
- printf("%d" , L -> data) ;
- for(L = L -> next ; L ; L = L -> next) printf(" , %d" , L -> data) ;
- printf("\n\n") ;
- } else {
- printf("链表为空。\n") ;
- }
- }
- int main(void)
- {
- LinkList L ;
- int e ;
- CreateListHead(& L ,3) ;
- ShowList(L) ;
- ListInsert(L , 3 , 404) ;
- ShowList(L) ;
- ListInsert(L , 1 , 808) ;
- ShowList(L) ;
- L = ListDelete(L , 3 , & e) ;
- ShowList(L) ;
- L = ListDelete(L , 1 , & e) ;
- ShowList(L) ;
- }
复制代码
编译、运行实况:
- D:\0002.Exercise\C>g++ -o x x.c
- D:\0002.Exercise\C>x
- 101
- 202
- 303
- 101 , 202 , 303
- 101 , 202 , 404 , 303
- 808 , 101 , 202 , 404 , 303
- 808 , 101 , 404 , 303
- 101 , 404 , 303
- D:\0002.Exercise\C>
复制代码 |
|