[c]链表的建立与一些操作

来源:互联网 发布:海岛大亨5mac版汉化 编辑:程序博客网 时间:2024/09/21 06:35

你没事吧,没事,就建个链表玩~于是我就那么无聊的建了个链表。。有啥用??不知道= =


#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;struct Node{int array;Node* next;};struct List{Node* head;Node* tail;};List new_list(){List list;list.head=NULL;list.tail=NULL;return list; }void add_list(List *list,int array){Node *p=(Node*)malloc(sizeof(Node));Node *q;if(list->head == NULL){list->head = p;p->array = array;p->next = NULL;list->tail = p;}else{q = list->tail;q->next = p;p->array = array;p->next = NULL;list->tail = p;}}void print_list(List *list){Node *p;for(p=list->head ; p ; p=p->next){printf("%d\t", p->array);}}void printx_list(List *list,int x){Node *p;int i;for(i=1,p=list->head ; i<x ; p=p->next,i++);printf("%d",p->array);}int find_list(List *list,int num){int x,sign=0,i=1;Node *p;for(p=list->head; p ;p=p->next,i++){if(p->array == num){x=i;sign=1;break;}}if(!sign) x=-1;return x;}void delx_list(List *list,int num){Node* p;Node* q;int i;p=list->head;for( i=1; i<num ; q=p,p=p->next,i++) ;if(num==1){list->head = p->next;free(p);}else{q->next = p->next;free(p);}}void free_list(List *list){Node *p;Node *q;p=list->head;while(p){q=p;p=p->next;free(q);}}int main(){List list=new_list();           //建一个新链表 int x;for(int i=0;i<5;i++){scanf("%d",&x);add_list(&list,x);//在链表中添加5个数 }print_list(&list);//遍历链表并打印 printf("\n");printx_list(&list,3);//打印链表中第x个数 int num;scanf("%d",&num);int n=find_list(&list,num);//找到链表中指定的数,返回值是第几个数,若没有返回-1 printf("found at:%d",n);int s;scanf("%d",&s);delx_list(&list,s);//删除链表中第s个数 print_list(&list);free_list(&list);//删除链表 return 0;}


0 0
原创粉丝点击