首页 > 代码库 > 链表的增删(未考虑末尾)

链表的增删(未考虑末尾)

#include<iostream>
using namespace std;

class node{
public:
    node():value(0),next(NULL){}
    ~node(){}
    int value;
    node* next;
};///be careful this ;

node* createlist(int a[],int n)
{
 node* startnode = new node[n];
 node* ret = startnode;
 for(int i = 0;i<n;i++)
 {
     startnode[i].value = a[i];
     if(i<n-1) 
         startnode[i].next = startnode + i + 1;
 }
 while(startnode)
 {
     cout<<" "<<startnode->value;
     startnode = startnode->next;
 }
 cout<<endl;
 return ret;
}

node* insertnode(node* nd,int n)///在第n个元素后面加数
{
 node* temp = nd;
 node* startnode = nd;

 while(--n) ////注意这个符号的顺序
 temp = temp->next; ///这样就知道了第n个数

 node* nnode = new node;
 nnode->value = http://www.mamicode.com/123;
 nnode->next = temp->next;
 temp->next = nnode;

  while(startnode)
 {
     cout<<" "<<startnode->value;
     startnode = startnode->next;
 }
  cout<<endl;
 return nd;///暂时不考虑插入头这种情况
}

node* deletenode(node* nd,int n)
{
 node* temp = nd;
 node* t;
 node* startnode = nd;
 n = n -1;
 while(--n)
     temp = temp->next;
 t = temp->next ;
 temp->next = temp->next->next;
 delete t;
   while(startnode)
 {
     cout<<" "<<startnode->value;
     startnode = startnode->next;
 }
   cout<<endl;
 return nd;
}
int main()
{
    int a[] = {1,2,3,4,5,6,7,8,9};
    node * t = createlist(a,9);
    insertnode(t,3);
    deletenode(t,4);
}