C++ 数组转化为单链表,双向链表的创建

来源:互联网 发布:网络食品交易平台备案 编辑:程序博客网 时间:2024/04/20 21:53

、、、、、、、、、创建结点、、、、、、、、、、、、、、、、、、、、、typedef struct Student{int data;struct Student*next;}node;、、、、、、将数组复制给链表、、、、、、、、、、、、、、、、 int arr[]={3,4,9,1,5,2,8,0,6,7}; node*head=(node*)malloc(sizeof(node)); node* ptr; head->data=arr[0]; head->next=NULL;  node*p=NULL; for(int i=1;i<10;i++) {  ptr=head;  p=(node*)malloc(sizeof(node));  p->data=arr[i];  while(ptr->next!=NULL)   ptr=ptr->next;  p->next=ptr->next;  ptr->next=p; }、、、、打印链表、、、、、、、void printList(node*head){ node*p=head; cout<<" List: "<<endl; while(p!=NULL) {  cout<<p->data<<" ";  p=p->next; } cout<<endl;}////////////////////删除链表中指定的结点,本例中是删除data=5的结点//////////////////////////////void delenodeFunc(node* head){ node* ptr=head; node* delenode=NULL; while(ptr->next->data!=5) {  ptr=ptr->next; } delenode=ptr->next; ptr->next=delenode->next; free(delenode); printList(head); }///////////////////////双向链表//////typedef struct poly_node *poly_pointer;typedef struct poly_node{int data;poly_pointer front;poly_pointer next;};//双向链表的创建和打印poly_pointer createDoubleList(){ int data; poly_pointer newpoly; poly_pointer head=NULL,ptr=NULL; while(1) {  cin>>data;  if(data==-1)   break;  newpoly=(poly_pointer)malloc(sizeof(poly_node));  newpoly->data=data;  newpoly->front=NULL;  newpoly->next=NULL;  if(head==NULL)  {   head=ptr=newpoly;  }  else  {   newpoly->front=ptr;   ptr->next=newpoly;   ptr=newpoly;  } } return head;}void TravelDLinkList(poly_pointer pHead){ while(NULL != pHead) {  printf("%d ",pHead->data);  pHead = pHead->next; } printf("\n");}

0 0
原创粉丝点击